定义中间件
在 根目录
下,创建 midd文件夹
,在 midd文件夹
下创建 md.py
文件,写入 类为 MyMd
的中间件
'''
自定义一个中间件
继承 MiddlewareMixin
'''
from django.utils.deprecation import MiddlewareMixin
class MyMd(MiddlewareMixin):
def process_request(self, request):
'''
前置中间件
:param request: 请求数据
:return:
无发返回值或返回None,放行
不放行 返回 redirect、render、http...
'''
# 【例如】如果是登录页面放行,不是登录页面判断cookie
if request.path_info == '/login/':
return
else:
pass
print("前置中间件")
pass
def process_response(self, request, response):
'''
后置中间件
:param request: 请求数据
:param response: 响应返回数据
:return:
'''
print("后置中间件")
return response
注册中间件
在配置文件中的 settings.py
中 注册中间件
# 中间件 按顺序执行
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# csrf认证
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
# 自定中间件
'midd.md.MyMd'
]
执行结果
先执行 前置中间件
,再执行 业务代码
,最后执行 后置中间件
前置中间件
index
后置中间件
评论 (0)