一、Django中间件的请求周期
我们从浏览器发出一个请求 Request,得到一个响应后的内容 HttpResponse ,这个请求传递到 Django的过程如下:
也就是说,每一个请求都是先通过中间件中的 process_request 函数,这个函数返回 None 或者 HttpResponse 对象,如果返回前者,继续处理其它中间件,如果返回一个 HttpResponse,就处理中止,返回到网页上。
二、自定义及注册中间件
1. 创建中间件
在project根目录下创建中间件py文件:
1 class RequestExeute(object): 2 def process_request(self, request): 3 print('process_request') 4 5 def process_view(self, request, callback, callback_args, callback_kwargs): 6 print('process_view') 7 8 def process_exception(self, request, exception): 9 """ 10 当views函数出错时执行 11 :param request: 12 :param exception: 13 :return: 14 """ 15 print('process_exception') 16 17 def process_response(self, request, response): 18 """ 19 必须return HttpResponse 20 :param request: 21 :param response: 22 :return: 23 """ 24 print('process_response') 25 return response 26 27 def process_template_response(self, request, response): 28 """ 29 视图函数的返回值中,如果有render方法,才被调用 30 :param request: 31 :param response: 32 :return: 33 """ 34 print('process_template_response') 35 return response