Django基础笔记6(Django中间件)
Django自带的中间件
中间件执行流程
自定义中间件
Middle.py
class Middle1(MiddlewareMixin):
def process_request(self, request):
print("中间件request")
def process_response(self, request, response):
print('中间件response')
return response
#常用的方法
class Middle(MiddlewareMixin):
def process_request(self,request):
pass
def process_response(self,request,response):
pass
def process_view(self,request,callback,callback_args,callback_kwargs):
pass
def process_exception(self,request,exception): #处理函数出现错误时执行
pass
def process_template_response(self, request, response):
pass #其中request 是 HttpRequest 对象, response 是一个由Django view或者中间件返回的TemplateResponse 对象,process_template_response()在 view 使用 render 渲染一个模版对象完成之后被调用,它必须返回一个render 方法执行后的response对象。
view.py
class cla:
def __init(self,req):
self.req=req
def render(self): #process_template_response 中间件自动调用render函数
return Httpresponse('asf')
def test(request):
return Foo(request)


利用中间件判断用户是否登录
class AuthMid(MiddlewareMixin):
def process_request(self, request):
now = '/1/'
white = [
now + 'login.html',
now + 'image_code',
now + 'register.html',
now + 'index.html'
]
try:
userinfo = request.session['userinfo']
userobj = models.User.objects.filter(**userinfo).first()
request.user = userobj
# 设置白名单:无需登录即可访问
except:
request.user = None
finally:
if request.user:
return
else:
url = request.path_info # url中的问好会变为空格
if url.strip() in white:
return
else:
return redirect('App1Login')
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具