Django之中间件
Django之中间件
中间件
中间件是一个用来处理 Django 的请求和响应的框架级别的钩子。他是一个轻量、低级别的插件系统,用于在全局范围内改变 Django 的输入和输出。每个中间件都负责一些特定的功能。
再简单点说就是在视图函数执行之前和执行之后都可以做一些额外的操作,它本质上是 Django 的一个自定义类,类中定义了一些方法,Django 框架会在处理请求的特定的时间去执行这些方法。
自定义中间件
中间件可以定义五个方法,分别是:(重点是 process_request 和 process_response)
process_request(self, request)
process_view(self, request, view_func, view_args, view_kwargs)
process_template_response(self, request, response)
process_exception(self, request, exception)
process_response(self, request, response)
以上方法的返回值可以是 None 或者一个 HttpRsponse 对象。如果是 None,则继续按照 Django 定义的规则向后继续执行;如果是 HttpRsponse 对象,则直接将该对象返回给用户。
自定义一个中间件
1 from django.utils.deprecation import MiddlewareMinxin 2 3 class MD1(MiddlewareMixin): 4 5 def process_request(self, request): 6 print("MD1里面的process_request") 7 8 def process_response(self, request, response): 9 print('MD1里面的process_response') 10 11 return response
然后再 settings 中的 MIDDLEWARE 中注册下这个中间件就可以使用了.
process_request 有一个参数,就是 request,这个 request 和视图中的 request 是一样的。它的返回值可以是 None,也可以是 HttpRsponse 对象。返回值是 None 的话,按正常流程继续走,交给下一个中间件处理;如果是 HttpRsponse 对象,Django 将不执行视图函数,而将响应对象返回给浏览器。