先贴出代码
class TestMiddleware:
def __init__(self, get_response):
'''服务器重启之后,就收第一个请求时调用'''
self.get_response = get_response
print('——————————————init———————————————')
def __call__(self,request):
print('--------------call---------------')
return self.get_response(request)
def process_request(self,request):
'''产生requset对象之后,url匹配之前调用'''
print('--------process_request----------')
def process_view(self,request,view_func,*view_args,**view_kwargs):
print('----------process_view-----------')
def process_response(self,request,response):
'''视图函数调用之后,内容返回之前'''
print('------- process_response---------')
return response
按照视频教程所说应该会打印5行信息(其中,__call__函数并没有在教程中,除__call__函数外还有一条输出信息在views.py文件中定义),但是运行结果却只有3条,缺少的两条为 process_request
和process_response
函数中的信息。
原因:
因为视频教程是Django1.8版本的,但是我电脑上是Django2.1版本。在Django2(没有查过)之后的版本中,Django中间件内置了五个函数,分别为__init__,__call__,process_view,process_exception和process_template_response。