Django-中间件
一、中间件
是一个轻量级、底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出。
每个中间件组件是一个独立的Python类,可以定义下面方法中的一个或多个:
_init _:无需任何参数,服务器响应第一个请求的时候调用一次,用于确定是否启用当前中间件
process_request(request):执行视图之前被调用,在每个请求上调用,返回None或HttpResponse对象
process_view(request, view_func, view_args, view_kwargs):调用视图之前被调用,在每个请求上调用,返回None或HttpResponse对象
process_template_response(request, response):在视图刚好执行完毕之后被调用,在每个请求上调用,返回实现了render方法的响应对象
process_response(request, response):所有响应返回浏览器之前被调用,在每个请求上调用,返回HttpResponse对象
process_exception(request,response,exception):当视图抛出异常时调用,在每个请求上调用,返回一个HttpResponse对象
二、中间件处理流程

如果在处理过程中出现错误,则进行如下处理:

三、自定义中间件
中间件其实就是python中的一个类,所以在自定义中间件只需要遵循类的规则即可。
from django.utils.deprecation import MiddlewareMixin class MyMiddleWare(MiddlewareMixin): def process_request(self, request): print('有请求时执行') # 在这里可以做ip访问拦截器 def process_view(self, request, callback, callback_args, callback_kwargs): print('逻辑处理之前执行') def process_exception(self, request, exception): print('出错时执行') # 在这里可以进行一些错误处理 def process_response(self, request, response): print('响应后执行,无论是否出错') return response
在中间件定义完后,注意要在settings.py文件中注册自定义的中间件。


浙公网安备 33010602011771号