基本版
在项目根目录里建package包
名称是mymiddleware
新建my.py
from django.utils.deprecation import MiddlewareMixin
class Row1(MiddlewareMixin):
def process_request(self, request):
print("中间件1")
def process_response(self, request, response):
print("中间件1返回")
return response
class Row2(MiddlewareMixin):
def process_request(self, request):
print("中间件2")
def process_response(self, request, response):
print("中间件2返回")
return response
class Row3(MiddlewareMixin):
def process_request(self, request):
print("中间件3")
def process_response(self, request, response):
print("中间件3返回")
return response
在setting里增加中间件
‘mymiddleware.my.Row1’,
‘mymiddleware.my.Row2’,
‘mymiddleware.my.Row3’,
运行上次的请求
效果如下:
所以中间件的顺序是,先所有request123,再调用views函数,然后response321
增加view部分
from django.utils.deprecation import MiddlewareMixin
class Row1(MiddlewareMixin):
def process_request(self, request):
print("中间件1")
def process_view(self,request,view_func,view_func_args,view_func_kwargs):
print("中间件V1view")
def process_response(self, request, response):
print("中间件1返回")
return response
class Row2(MiddlewareMixin):
def process_request(self, request):
print("中间件2")
def process_view(self,request,view_func,view_func_args,view_func_kwargs):
print("中间件V2view")
def process_response(self, request, response):
print("中间件2返回")
return response
class Row3(MiddlewareMixin):
def process_request(self, request):
print("中间件3")
def process_view(self, request, view_func, view_func_args, view_func_kwargs):
print("中间件V3view")
def process_response(self, request, response):
print("中间件3返回")
return response
顺序是先request123,再view123,再response321
渲染前增加print
则会在返回前输出
class Index10View(View):
def get(self, request):
print('hello')
return render(request, 'index9.html')