Django中心件

打印 上一主题 下一主题

主题 573|帖子 573|积分 1723

中心件只是功能。
对于process_request方法:


  • 无返回或返回None,哀求继承向后走
  • 有返回值,return direct,return HttpResponse,return render,不会继承向后走,直接执行process_response函数
可以自己界说属于自己的中心件。
  1. # 自行创建一个文件名为 md.py
  2. from django.utils.deprecation import MiddlewareMixin
  3. from django.shortcuts import HttpResponse, redirect
  4. class MiddlewareDemo(MiddlewareMixin):
  5.         def process_request(self, request):
  6.                 # 无需做验证,放行
  7.                 if request.path_info in ['/example'/]:
  8.                         return
  9.                 # 获取用户session的信息
  10.                 userInfo = request.session.get("userInfo")
  11.                 # 有值,表示已登录,则继续
  12.                 if userInfo:
  13.                         return
  14.                
  15.                 # 无值
  16.                 return redirect('/example/')
  17.         def process_response(self, request, response):
  18.                 # 必须得返回
  19.                 return response
复制代码
创建好自界说的Middleware之后,须要在settings.py里植入。
  1. MIDDLEWARE = [
  2.         ....
  3.         # 添加下面一行
  4.         "utils.md.MiddlewareDemo",
  5. ]
复制代码

中心件的应用场景


  • 日记,获取访问时,哀求的 IP 地址并记到文件中。
  • 权限校验,有权限返回None,无权限就返回HttpResponse("无权访问")
  • 登录判定,判定用户的session中是否存储信息。

点个赞呗~

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

东湖之滨

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表