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将不执行视图函数,而将响应对象返回给浏览器。