Django教程-中间件
Django教程-中间件
gh_1d7504e4dee1
回复:python,领取Python面试题。分享Python教程,Python架构师教程,Python爬虫,Python编程视频,Python脚本,Pycharm教程,Python微服务架构,Python分布式架构,Pycharm注册码。
在 Django 中,中间件是一个轻量级插件,在请求和响应执行期间进行处理。中间件用于执行应用程序中的功能。这些功能可以是安全、会话、csrf 保护、身份验证等。
Django提供了各种内置的中间件,也允许我们编写自己的中间件。请参阅Django 项目的settings.py文件,其中包含各种中间件,用于向应用程序提供功能。例如,安全中间件用于维护应用程序的安全性。
// 设置.py
MIDDLEWARE
= [
’django.middleware.security.SecurityMiddleware’
,
’django.contrib.sessions.middleware.SessionMiddleware’
,
’django.middleware.common.CommonMiddleware’
,
’django.middleware.csrf.CsrfViewMiddleware’
,
’django.contrib.auth.middleware.AuthenticationMiddleware’
,
’django.contrib.messages.middleware.MessageMiddleware’
,
’django.middleware.clickjacking.XFrameOptionsMiddleware’
,
]
资源分享
点击领取:最全Python资料合集
创建自己的中间件
中间件是一个接受参数get_response并返回响应的类。
class
FirstMiddleware
:
def
__init__
(
self
, get_response)
:
self
.get_response = get_response
def
__call__
(
self
, request)
:
response =
self
.get_response(request)
它必须接受 get_response 参数,因为 Django 仅使用它来初始化中间件。它只调用一次,而 call 对每个请求执行。
激活中间件
要激活中间件,请将其添加到settings.py文件的 MIDDLEWARE 列表中。
MIDDLEWARE
= [
’django.middleware.security.SecurityMiddleware’
,
’django.contrib.sessions.middleware.SessionMiddleware’
,
’django.middleware.common.CommonMiddleware’
,
’django.middleware.csrf.CsrfViewMiddleware’
,
’django.contrib.auth.middleware.AuthenticationMiddleware’
,
’django.contrib.messages.middleware.MessageMiddleware’
,
’django.middleware.clickjacking.XframeOptionsMiddleware’
,
’add new created middleware here’
]
中间件顺序和分层
中间件按照 MIDDLEWARE 列表中定义的顺序应用,每个中间件类都是一个层。MIDDLEWARE 列表就像一个洋葱,因此每个请求从上到下传递,而响应则按相反顺序(从下到上)。
其他中间件方法
除了请求和响应之外,我们还可以添加三种方法来为我们的中间件添加更多功能。
process_view(请求、view_func、view_args、view_kwargs)
它分别接受 HttpRequest 对象、函数对象、传递给视图的参数列表或参数字典。
该方法在调用视图之前执行。它返回 None 或 HttpResponse,如果返回 HttpResponse,则停止处理并返回结果。
process_template_response(请求,响应)
它有两个参数,第一个是 HttpRequest 的引用,第二个是 HttpResponse 对象。该方法在视图完成执行后立即调用。
它返回一个实现 render 方法的响应对象。
process_exception(请求,异常)
该方法有两个参数,第一个是 HttpRequest 对象,第二个是视图函数引发的 Exception 类对象。
此方法返回 None 或 HttpResponse 对象。如果返回响应,则将应用中间件并将结果返回到浏览器。否则,异常由默认处理系统处理。
-
历时五年,Cython 3.0 正式发布
-
Django教程-数据库迁移
-
6个顶级Python可视化库
-
2023年血糖新标准公布,不是3.9-6.1,快来看看你的血糖正常吗? 2023-02-07
-
2023年各省最新电价一览!8省中午执行谷段电价! 2023-01-03
-
GB 55009-2021《燃气工程项目规范》(含条文说明),2022年1月1日起实施 2021-11-07
-
PPT导出高分辨率图片的四种方法 2022-09-22
-
2023年最新!国家电网27家省级电力公司负责人大盘点 2023-03-14
-
全国消防救援总队主官及简历(2023.2) 2023-02-10
-
盘点 l 中国石油大庆油田现任领导班子 2023-02-28
-
我们的前辈!历届全国工程勘察设计大师完整名单! 2022-11-18
-
关于某送变电公司“4·22”人身死亡事故的快报 2022-04-26