中间件(Middleware)用于在http请求到达 视图函数之前 和 视图函数return之后 ,django会根据自己的规则在
合适的时机执行中间件中相应的方法。
常用作view中冗余功能的抽取,如每个页面(或某些页面)在访问前强制登录。
强制登录实例
- 定义中间件(可以新建一个包)
中间件中常用的两个过程:process_request , process_response
class MyMiddleAware2(MiddlewareMixin):
#如果验证成功,则什么一个不用做,否则返回HttpResponse即可响应请求(中断)
def process_request(self,request):#强制登录判断
if "login" not in request.path:#路径中如果没有"login"
print("登录验证")
session = request.session #获取session
if session.get("login"): #判断是否有登录的标记
print("已登录")
else:
print("未登录")
return render(request,"login.html") #未登录则,跳转登录页面
else:
print("正在登录") #如果路径中"login"则是登录动作本身
def process_response(self,request,response):
print("response:",request,response)
return response #持续返回响应
- 激活中间件(导入第一步中中间件类的路径)
每当有请求发生时,所有中间件都会执行自己的生命周期。
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
....
'middleware115.middlewares.MyMiddleware2',# 注册自定义中间件,尽量放在最后注册
]
网友评论