中心件只是功能。
对于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中是否存储信息。
点个赞呗~
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |