-
中间件是Django请求/响应处理的钩子框架。它是一个轻量级,底层的“插件”系统,用于全局改变Django的输入或输出。
-
每个中间件组件负责特定的功能。如:AuthenticationMiddleware它使用户与请求关联起来。
-
中间件类:
- 中间件类须继承自django.utils.deprecation.MiddlewareMixin类
- 中间件类须实现下列5个方法中1个或者多个:
- def process_request(self,request):执行路由之前被调用,在每个请求上调用,返回None或HttpResponse对象
- def process_view(self,request,callback,callback_args,callback_kwargs):调用视图之前被调用,在每个请求上调用,返回None或HttpResponse对象
- def process_response(self,request,response):所有响应返回浏览器被调用,在每个请求上调用,返回HttpResponse对象
- def process_esxception(self,request,exception):当处理过程中抛出异常时调用,返回一个HttpResponse对象
- def process_template_reponse(self,request,response):在视图函数执行完毕且试图返回对象中包含render方法时被调用;该方法需要返回实现了render方法的响应对象
- 中间件中的大多数方法在返回None时表示忽略当前操作进入下一项事件,当返回HttpResponese对象时表示此请求结束,直接返回给客户端
-
编写中间件类:
# file : middleware/mymiddleware.py from django.http import HttpResponse from django.utils.deprecation import MiddlewareMixin class MyMiddleWare(MiddlewareMixin): def process_request(self, request): print("中间件方法 process_request 被调用") def process_view(self, request, callback, callback_args, callback_kwargs): print("中间件方法 process_view 被调用") def process_response(self, request, response): print("中间件方法 process_response 被调用") return response
-
注册中间件
# file : settings.py MIDDLEWARE = [ ... ]
暂无评论...