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. 返回值  必须要有返回值,返回要是 响应对象

原文地址:https://www.cnblogs.com/tianyu529/p/9229221.html