简单来说:中间件是用户发送请求和浏览器相应的中间部分,可以在中间件中定义自己想要实现的功能。
自定义中间件:
from django.utils.deprecation import MiddlewareMixin
class TestMiddleWare1(MiddlewareMixin):
def process_request(self,request): # 注意函数名不能随便自定义
print('每次请求时 都会调用执行 1111111')
def process_response(self,request,response):
print("每次响应时候 调用执行 1111111")
return response
class TestMiddleWare2(MiddlewareMixin):
def process_request(self,request):
print('每次请求时 都会调用执行 222222')
def process_response(self,request,response):
print("每次响应时候 调用执行 222222")
return response
中间件方法名:
process_request : 请求进来时,权限认证
process_view : 路由匹配之后,能够得到视图函数
process_exception : 异常时执行
process_template_responseprocess : 模板渲染时执行
process_response : 请求有响应时执行
注册中间件:
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',
# 注册中间件
'app01.middleWare.TestMiddleWare1',
'app01.middleWare.TestMiddleWare2',
]
关于中间件的执行顺序:
请求时:由上往下
响应时:由下往上中间件流程图: