django的中间件可以在视图函数执行前执行,比如登陆验证、日志记录等,下面简单说明一下中间件的基础用法,主要为笔者学习时的笔记
文件夹的名字可自定义,本文使用utils作为文件夹名
如用于登陆验证的中间件loginCheck.py
from django.http import HttpResponseRedirect
from django.utils.deprecation import MiddlewareMixin
class UserLoginCheck(MiddlewareMixin):
'''
登录验证中间件
'''
def process_request(self, request):
# 用户request请求前
path = ['/login/', '/logout/'] # 不需要进行登录检测的url
if request.path in path:
return
userinfoSession = request.session.get('userinfo')
if not userinfoSession:
return HttpResponseRedirect('/login/')
return
在setting.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',
'utils.loginCheck.UserLoginCheck', # 此处为自定义的中间件
]
中间件可定义的五种方法
Request预处理函数: process_request(self, request)
View预处理函数: process_view(self, request, callback, callback_args,callback_kwargs)
Template模版渲染函数:process_template_response()
Exception后处理函数:process_exception(self, request, exception)
Response后处理函数:process_response(self, request, response)
参考资料:https://baijiahao.baidu.com/s?id=1622776730103957680
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。