process_template_response(self, request, response) 有两个参数,response 是 TemplateResponse 对象(由视图函数或者中间件产生)
process_template_response 函数是在视图函数执行完后立即执行的
执行 process_template_response 函数有一个前提条件,那就是视图函数返回的对象要有一个 render() 方法(或者表明该对象是一个 TemplateResponse 对象或等价方法)
middleware_test.py:
from django.utils.deprecation import MiddlewareMixin from django.shortcuts import HttpResponse class Test(MiddlewareMixin): def process_request(self, request): print("这是一个中间件 --> test") def process_template_response(self, request, response): print("这里是 Test 的 process_template_response") return response class Test2(MiddlewareMixin): def process_request(self, request): print("这是一个中间件 --> test2") def process_template_response(self, request, response): print("这里是 Test2 的 process_template_response") return response
views.py:
from django.shortcuts import render, HttpResponse, redirect def index(request): print("这里是 index 页面") rep = HttpResponse("这里是主页面 index") def render(): print("这里是 index 函数里的 render 方法") return HttpResponse("index") rep.render = render return rep
访问,http://127.0.0.1:8000/index/
运行结果: