Django - 中间件
- 一个轻量级、底层的插件,可以介入 Django 的请求和响应处理过程,修改 Django 的输入或输出
- 每个中间件组件就是一个独立的 python 类
__init__
:无需任何参数,服务器响应第一个请求的时候调用一次,用于确定是否启用当前中间件process_request(request)
:处理请求前- 在每个请求上执行
- request 对象产生之后,url 匹配之前调用
- 返回 None 或者 HTTPResponse 对象
process_view(request, view_func, view_args, view_kwargs)
:处理视图前- 在每个请求上执行
- url 匹配之后,视图函数调用之前调用
- 返回 None 或者 HTTPResponse 对象
process_template_response(request, response)
:处理模板之前 (非重点)- 在每个请求上执行
- 视图函数调用之后,模板调用之前执行
- 返回 None 或者 HTTPResponse 对象
process_response(request, response)
:处理响应后- 在每个请求上执行
- 视图函数调用之后,所有响应返回浏览器之前被调用
- 返回 HTTPResponse 对象
process_exception(request, exception)
:视图抛出异常时- 在每个请求上调用
- 当视图抛出异常时调用
- 返回一个 HTTPResponse 对象
- 在应用目录下创建名为
middlewares
的包 - 在该目录下创建中间件类文件
1
2
3
4
5
6
7from django.utils.deprecation import MiddlewareMixin
class MyMiddle(MiddlewareMixin):
def process_request(self, request):
request.description = "sunck is a good man"
return NonemyMiddle.py
1 | MIDDLEWARE = [ |
1 | def index(request): |