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 None
配置自定义中间件
1 | MIDDLEWARE = [ |
测试中间件
1 | def index(request): |