目录
中间件介绍
Django访问网址就会先去访问中间件,而所谓的中间件就是一个一个的类,里面编写了相关的处理逻辑
中间件类里面有最主要的函数,process_request和process_resonpse
process_request是先执行的,如果没有返回值就会执行下一个中间件,如果有返回值就不在执行下一个中间件,而是直接执行process_resonpse,带着返回值返回上一个中间件,
中间件创建步骤
1.在自己的app项目下创建文件夹存放自己写的中间件
2.导入包
from django.utils.deprecation import MiddlewareMixin
3.创建类
基本语法
class Name(MiddlewareMixin):
def process_request(self,request):
# 自己处理的逻辑
return
def process_response(self,request.response)
# 自己处理的逻辑
return response # 必须返回此值
示例
这里写的一个登录的验证,通过此中间件,如果没有登录的情况就跳转到登录页面,无法进入
class LoginAuth(MiddlewareMixin):
def process_request(self,request):
if request.path_info == "/login/":
return
user = request.session.get('user')
print(user)
if user:
return
return redirect('/login/')
def process_response(self,request,response):
return response
4.在setting的 MIDDLEWARE 加入中间件
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',
# 自己写的中间件放到最后安顺序访问
'University_Games_Management_System.middleware.login_auth.LoginAuth',
]