django中的中间件是一个轻量级、底层的插件系统,可以介入Django的请求和响应处理过程,全局修改Django的输入或输出
中间件的设计为开发者提供了一种无侵入式的开发方式,增强了Django框架的健壮性。我们可以使用中间件,在Django处理视图的不同阶段对输入或输出进行干预。
如果你想修改请求,例如被传送到view中的HttpRequest
对象。 或者你想修改view返回的HttpResponse
对象,这些都可以通过中间件来实现
Django默认的中间件:
可能你还想在view执行之前做一些操作,这种情况就可以用 middleware
来实现。
可以自己定义中间件,继承django.utils.deprecation.MiddlewareMixin
这个类,然后重写钩子方法
可以重写的五个钩子方法
1、process_request(self,request)
2、process_view(self, request, callback, callback_args, callback_kwargs)
3、process_template_response(self,request,response)
4、process_exception(self, request, exception)
5、process_response(self, request, response)
以上方法的返回值可以是None
或一个HttpResponse
对象,如果是None
,则继续按照django定义的规则向后继续执行,如果是HttpResponse
对象,则直接将该对象返回给用户。