一、定义中间件:
def bookmiddleware(get_response):
# 这里是 init的地方
# 类似于 flask中的 before_first_request
# 第一次请求前会执行这里,我们可以在这里做一些初始化工作
print('init')
def middleware(request):
# 请求前
# 类似于flask 的 before_request
print('befor request')
response = get_response(request)
# 相应后
# 类似于flask 的 after_request
print('after_request')
return response
return middleware
def bookmiddleware2(get_response):
# 这里是 init的地方
# 类似于 flask中的 before_first_request
# 第一次请求前会执行这里,我们可以在这里做一些初始化工作
print('init2222222222')
def middleware(request):
# 请求前
# 类似于flask 的 before_request
print('befor request2222222222')
response = get_response(request)
# 相应后
# 类似于flask 的 after_request
print('after_request2222222222')
return response
return middleware
二、在 <setting.py> 中注册中间件:
# 中间件
# 类似于Flask中的钩子函数
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',
# 注册我们定义的中间件
'book.middleware.bookmiddleware',
'book.middleware.bookmiddleware2',
]
三、中间件的执行顺序:
1 > 2 >2 >1