在django的模块当中新建一个文件:middlewares
middlewares.py:
from django.utils.deprecation import MiddlewareMixin
# 中间件需要继承MiddlewareMixin对象
class MyMiddleaware(MiddlewareMixin):
# 不记得这两个方法名,可以查看源码中的__call__方法
# 调用视图之前执行,只有一个request参数
def process_request(self, request):
print("prcoess_request")
# 给reuqest添加键值
request.name = "python"
# 如果此处有return HttpResponse()则不执行视图
# 调用视图之后执行,有两个参数
def process_response(self,request, response):
print("process_response")
return response
class MyMiddleaware2(MiddlewareMixin):
def process_request(self, request):
print("prcoess_request")
# 拿到上一个中间件的键值,注意需要先执行上一个中间件
print("request.name", request.name)
def process_response(self, request, response):
print("process_response")
return response
创建好中间件后,需要在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',
# 将中间件的位置
'goods.middlewares.MyMiddleaware',
'goods.middlewares.MyMiddleaware2',
]