Django中间件
1. 中间件概念
中间件是一个用来处理Django的请求和响应的框架级别的钩子。它是一个轻量、低级别的插件系统,用于在全局范围内改变Django的输入和输出。每个中间件组件都负责做一些特定的功能。作用在wsgiref和url.py之间,客户端往服务端传递消息时根据HTTP协议传送的信息会先正向经过中间件,服务端给客户端传递消息时会反向经过中间件
2. 如何自定义中间件
1. 按照格式要求写一个类
2. 把我们写好的类在settings.py注册到MIDDLEWARE配置项的列表中
3. 每一个中间件中五个可以被重写的方法:
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. 执行顺序 按照在列表中注册的顺序依次执行
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. 返回值 必须要有返回值,返回要是 响应对象