中间件只是功能。
对于process_request
方法:
- 无返回或返回None,请求继续向后走
- 有返回值,
return direct
,return HttpResponse
,return render
,不会继续向后走,直接执行process_response
函数
可以自己定义属于自己的中间件。
# 自行创建一个文件名为 md.py
from django.utils.deprecation import MiddlewareMixin
from django.shortcuts import HttpResponse, redirect
class MiddlewareDemo(MiddlewareMixin):
def process_request(self, request):
# 无需做验证,放行
if request.path_info in ['/example'/]:
return
# 获取用户session的信息
userInfo = request.session.get("userInfo")
# 有值,表示已登录,则继续
if userInfo:
return
# 无值
return redirect('/example/')
def process_response(self, request, response):
# 必须得返回
return response
创建好自定义的Middleware之后,需要在settings.py里植入。
MIDDLEWARE = [
....
# 添加下面一行
"utils.md.MiddlewareDemo",
]
中间件的应用场景
- 日志,获取访问时,请求的 IP 地址并记到文件中。
- 权限校验,有权限返回None,无权限就返回
HttpResponse("无权访问")
- 登录判定,判断用户的session中是否存储信息。
点个赞呗~
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » Django中间件
发表评论 取消回复