中间件
在users应用中新建一个middleware.py文件,
def simple_middleware(get_response):
# get_response 是处理request的函数,中间件修改request,并不处理request=>response
# 此处编写的代码仅在Django第一次配置和初始化的时候执行一次。
def middleware(request):
# 此处编写的代码会在每个请求处理视图前被调用。
print('中间件转交request前,在这里可以修改request')
response = get_response(request)
# 此处编写的代码会在每个请求处理视图之后被调用。
print('中间件获取response之后,在这里可以修改response')
return response
return middleware
定义好中间件后,需要在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',
'users.middleware.simple_middleware', # 添加中间件
]
中间件可以做的事情:
- 记录每个url的浏览量
- 限流
- 认证
- rbac 权限 , url ,user ,根据用户判断下,有没有访问这个url的权限
- ip黑名单、反爬虫
多个中间件的执行顺序
- 在请求视图被处理前,中间件由上至下依次执行
- 在请求视图被处理后,中间件由下至上依次执行