(编辑:jimmy 日期: 2025/2/24 浏览:2)
前言
django的中间件可以在视图函数执行前执行,比如登陆验证、日志记录等,下面简单说明一下中间件的基础用法,主要为笔者学习时的笔记
1. 在django项目文件夹下创建一个用于存放中间件函数的文件夹
文件夹的名字可自定义,本文使用utils作为文件夹名
2. 在utils文件夹中创建中间件py文件
如用于登陆验证的中间件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
3. 配置使用中间件
在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()
默认不执行,只有在视图函数的返回结果对象中有render方法才会执行,并把对象的render方法的返回值返回给用户(注意不返回视图函数的return的结果了,而是返回视图函数 return值(对象)中rende方法的结果)
Exception后处理函数:process_exception(self, request, exception)
Response后处理函数:process_response(self, request, response)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。