1.运作周期
2.使用
from django.utils.deprecation import MiddlewareMixin # 指定py文件里面导入
3.具体描述
代码语言:javascript复制参数 执行时间 执行顺序 返回值
1. process_request
1. 执行时间
在视图函数执行之前
2. 参数
request ——》 视图函数中用到的request
3. 执行顺序
按照注册顺序顺序执行
4. 返回值
None 正常流程走
HttpResponse对象
当前中间件后面的中间件的process_request和process_response方法、视图函数都不执行
执行当前中间的process_response方法以及之前的中间的process_response方法
2. process_response
1. 执行时间
在视图函数执行之后
2. 参数
request ——》 视图函数中用到的request
response —— 》视图函数中返回的response
3. 返回值
必须是response对象
4. 执行顺序
按照注册顺序倒叙执行
3. process_view
1. 执行时间
在process_request之后,以及路由匹配之后,在视图函数执行之前
2. 参数
view_func ——》 要执行的视图函数
view_args ——》 视图函数的位置参数
view_kwargs ——》 视图函数的关键字参数
3. 返回值
None 正常走
4. 执行顺序
按照注册顺序顺序执行
4. process_exception(self, request, exception)
1. 执行时间(触发条件:有异常才执行)
在视图函数之后,在process_response之前
2. 参数
exception ——》 错误信息对象
3. 返回值
None 正常走
HttpResponse对象
注册顺序之前的中间件的process_exception方法不走了。
执行所有中间件的process_response方法
4. 执行顺序
按照注册顺序倒叙执行
5. process_template_response
1. 执行时间(触发条件:response对象要求有一个render方法)
在视图函数之后,在process_response之前
2. 参数
3. 返回值
返回response
4. 执行顺序
按照注册顺序倒叙执行