一、中间件的使用及生命周期
1.1中间件正常的生命周期
1.2 不正常的情况
二、编写类
1、可以写在任意的目录:自定义的类、继承一个类**(推荐)**
from django.utils.deprecation import MiddlewareMixin
class KeLaMiddleware(MiddlewareMixin):
def process_request(self, request):
# request是请求相关所有的数据
pass
def process_view(self, request, view, *args, **kwargs):
# request是请求相关所有的数据; view是试图函数; 路由参数*args, **kwargs
pass
def process_response(self, request, response):
# request是请求相关所有的数据
# response是试图函数返回的那个对象(封装了要返回到用户浏览器的所有数据)
return response
from django.utils.deprecation import MiddlewareMixin
class KeLaMiddleware(MiddlewareMixin):
def process_request(self, request):
# request是请求相关所有的数据
pass
def process_view(self, request, view, *args, **kwargs):
# request是请求相关所有的数据; view是试图函数; 路由参数*args, **kwargs
pass
def process_response(self, request, response):
# request是请求相关所有的数据
# response是试图函数返回的那个对象(封装了要返回到用户浏览器的所有数据)
return response
2、注册
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',
"utils.md.KeLaMiddleware"
]
# 动态导入 + 反射
3、测试
from django.utils.deprecation import MiddlewareMixin
class KeLaMiddleware(MiddlewareMixin):
def process_request(self, request):
print("KeLa.process_request")
def process_view(self, request, view, *args, **kwargs):
# *args 路由中没有定义名字的路由参数
# **kwargs ,路由中有参数的路由所带的参数
print("KeLa.process_view",view, *args, **kwargs)
def process_response(self, request, response):
print("KeLa.process_response")
return response
from django.contrib import admin
from django.urls import path
from django.shortcuts import HttpResponse
def x1(request):
print("视图.x1")
return HttpResponse("x1")
def x2(request, v1):
print("视图.x2", v1)
return HttpResponse("x2")
urlpatterns = [
path('admin/', admin.site.urls),
path('x1/', x1),
path('x2/<int:v1>/', x2),
]
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',
"utils.md.KeLaMiddleware"
]
https://www.cnblogs.com/Neeo/articles/14269422.html#django%E7%9A%84%E7%BC%93%E5%AD%98%E5%AF%B9%E8%B1%A1cache