核心提示:中间件的作用是对所有的请求做统一操作实例:创建一个Middle文件夹,新建一个m1.pyfrom django.utils.deprecation import MiddlewareMixinfrom...
中间件的作用是对所有的请求做统一操作
实例:
创建一个Middle文件夹,新建一个m1.py
from django.utils.deprecation import MiddlewareMixin from django.shortcuts import HttpResponse 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') return HttpResponse('STOP') 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
定义一个测试URL:
urls.py:
url(r'^test/$', views.test),
views.py:
def test(request): print('成功') return HttpResponse('OK')
settings.py中配置中间件:
MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'Middle.m1.Row1', 'Middle.m1.Row2', 'Middle.m1.Row3', ]
运行后访问测试URL输出:
中间件还有其他操作:
m1.py:
from django.utils.deprecation import MiddlewareMixin from django.shortcuts import HttpResponse class Row1(MiddlewareMixin): def process_request(self, request): print('1') def process_view(self, request, view_func, view_func_args, view_func_kwargs): print('*1*') 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('*2*') 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('*3*') def process_response(self, request, response): print('|3|') return response
运行后:
还有几个不重要并且很少使用的,就不介绍了