Django中间件
官方的说法:中间件是一个用来处理Django的请求和响应的框架级别的钩子。
它是一个轻量、低级别的插件系统,用于在全局范围内改变Django的输入和输出。每个中间件组件都负责做一些特定的功能。
中间件可以定义五个方法,
分别是:(主要的是process_request和process_response)
- process_request(self,request)
- process_view(self, request, view_func, view_args, view_kwargs)
- process_template_response(self,request,response)
- process_exception(self, request, exception)
- process_response(self, request, response)
如何自定义中间件:
1. 按照格式要求写一个类
2. 把我们写好的类在settings.py注册到MIDDLEWARE配置项的列表中
常用中间件的执行顺序:
1. process_request(self,request) 1. 何时执行 在urls.py之前执行 2. 执行的顺序 按照在列表中注册的顺序依次执行 3. 返回值 1. 返回None, 不错任何处理直接进行下一步 2. 返回响应对象, 直接跳出(后续中间件的process_request、不执行urls.py和views.py)返回响应 2. process_view(self, request, view_func, view_args, view_kwargs) 1. 执行时间: 在urls.py之后在执行真正的视图函数之前 2. 执行顺序 1. 按照在列表中注册的顺序依次执行 3. 返回值 1. 返回None, 放行 2. 返回响应对象,就直接跳出,倒序依次执行所有中间件的process_response方法 3. process_template_response(self,request,response) 4. process_exception(self, request, exception) 5. process_response(self, request, response) 1. 何时执行 在views.py返回响应对象之后执行 2. 执行的顺序 按照在列表中注册的倒序依次执行 3. 返回值 必须要有返回值,返回要是 响应对象
中间件的运行流程图:
下面这个是总的流程:面试常考无比掌握哦