Django的生命周期与中间件的流程

Django生命周期图

Django的中间件
第一步中间件在setting.py的MIDDLEWARE列表中进行注册
写一个类让其继承MiddlewareMixin类(from django.utils.deprecation import MiddlewareMixin)
第三步就可以在其类中重写父类的5中方法
这些方法中的参数都是与视图函数参数对应的
process_request(self, request)  主要方法。请求刚进来时,执行视图函数之前调用。
process_view(self, request, callback, callback_args, callback_kwargs)  URL路由匹配成功后,执行视图函数之前调用(不执行函数),拿到视图函数对象,及其所有参数。
process_exception(self, request, exception)  执行视图函数中遇到异常时调用。
process_template_response(self, request, response)  很少用。执行了render()渲染方法后调用。
process_response(self, request, response)  主要方法。执行视图函数结束之后有响应时调用。(每个方法中retuen response 他才会走上一个中间件的process_response方法)
中间件的流程:
首先第一步会执行中间件列表中的使用的process_request(self, request)方法,当达最后一个中间件后会执行路由匹配(不执行视图函数),然后又重第一个中间件开始执行process_view(self, request, callback, callback_args, callback_kwargs)方法,执行到最后一个中间件后执行路由匹配---->视图函数返回值,在执行process_response(self, request, response)方法由中间件最后一个往第一个原路执行,最后返回给用户
其中如果process_request(self, request)与process_view(self, request, callback, callback_args, callback_kwargs)如果遇见return render,httpresponse,redirect会直接从该中间件往回执行process_response(self, request, response)
posted @ 2021-01-22 13:56  大魔头的取经故事  阅读(71)  评论(0编辑  收藏  举报