django中间件
django中间件
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',
]
分析任意一中间件的源码
from django.middleware.security import SecurityMiddleware
class SecurityMiddleware(MiddlewareMixin):
def __init__(self, get_response=None):
pass
def process_request(self, request):
pass
def process_response(self, request, response):
pass
django支持程序自定义中间件,并暴露五个方法
重要
process_request
#从上往下依次执行
#如果有return返回值,就此隔断
process_response
#从下往上依次执行
了解
process_view
#路由匹配成功之后,视图函数之前
process_template_response
#返回的httpresponse对象有render属性的时候才会触发
process_exception
#当视图函数出现异常的时候触发
自定义中间件
1.创建一个文件夹(项目下或应用下)
2.文件夹中建一个py文件
3.继承类
4.配置
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',
自己创建文件的路径
]
#创建文件
from django.utils.deprecation import MiddlewareMixin
class MyMiddleware(MiddlewareMixin):
def process_request(self,request):
print("第一个中间件的process_request方法")
#写配置
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',
"app01.mymiddleware.mdd.MyMiddleware",
]

浙公网安备 33010602011771号