打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Django中间件----登录拦截器

继续上篇关于Django的日志,探索Django的其他方面。

首先想到的是Django里面有没有类似filter的组件。遗憾的是,并未发现Django中有类似过滤器或者拦截器的概念。然而,Django提供了功能或许更为强大(至少是不弱于)这些概念的新东西:middleware

设想这样的需求:在用户未登录之前,他访问任何页面,都将转入登录页面,要求其登录。这样的判断最适合放在页面逻辑的前端,而不是在页面逻辑中实现。

我们写这样的一个middleware,它拦截所有访问非login页面的请求,检测其cookie,并判断将请求转向login页面或者其请求的页面。

middleware代码如下:

 

Python代码  
  1. ''''' 
  2. Created on 2009-4-9 
  3.  
  4. @author: Administrator 
  5. '''  
  6. from django.http import HttpResponseRedirect   
  7. from django.contrib.auth import SESSION_KEY   
  8. from urllib import quote   
  9. class QtsAuthenticationMiddleware(object):   
  10.     def process_request(self, request):  
  11.         #print request.path   
  12.         if request.path != '/login/':   
  13.             if "favorite_color1" in request.COOKIES:  
  14.                 pass  
  15.             else:  
  16.                 return HttpResponseRedirect("http://lqqm.net")  

 

 

 

settings.py中配置此middleware

 

Python代码  
  1. MIDDLEWARE_CLASSES = (  
  2.     'django.middleware.common.CommonMiddleware',  
  3.     'django.contrib.sessions.middleware.SessionMiddleware',  
  4.     'django.contrib.auth.middleware.AuthenticationMiddleware',  
  5.     'middleware.QtsAuthenticationMiddleware',  
  6. )  

 

 

 

当用户第一次请求musician_list,会转向两全其美。

只有用户访问过login,设置了cookie,再访问musician_list,才能成功。

分享到:
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
django+mysql的简单开发教程
django-中间件
为你的Django视图使用装饰器 |只允许创建模型的用户删除它
Django学习笔记(2)
Django基础(26): 常用装饰器应用场景及正确使用方法
Django认证系统并不鸡肋反而很重要
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服