核心提示:中间件的作用是对所有的请求做统一操作实例:创建一个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
运行后:

还有几个不重要并且很少使用的,就不介绍了


