在Django中限制已登录用户的访问的方法


Posted in Python onJuly 23, 2015

有很多原因需要控制用户访问站点的某部分。

一个简单原始的限制方法是检查 request.user.is_authenticated() ,然后重定向到登陆页面:

from django.http import HttpResponseRedirect

def my_view(request):
  if not request.user.is_authenticated():
    return HttpResponseRedirect('/accounts/login/?next=%s' % request.path)
  # ...

或者显示一个出错信息:

def my_view(request):
  if not request.user.is_authenticated():
    return render_to_response('myapp/login_error.html')
  # ...

作为一个快捷方式, 你可以使用便捷的 login_required 修饰符:

from django.contrib.auth.decorators import login_required

@login_required
def my_view(request):
  # ...

login_required 做下面的事情:

    如果用户没有登录, 重定向到 /accounts/login/ , 把当前绝对URL作为 next 在查询字符串中传递过去, 例如: /accounts/login/?next=/polls/3/ 。

    如果用户已经登录, 正常地执行视图函数。 视图代码就可以假定用户已经登录了。
=

Python 相关文章推荐
Python的Flask框架中实现简单的登录功能的教程
Apr 20 Python
浅谈Python 的枚举 Enum
Jun 12 Python
Python使用当前时间、随机数产生一个唯一数字的方法
Sep 18 Python
python 同时运行多个程序的实例
Jan 07 Python
妙用itchat! python实现久坐提醒功能
Nov 25 Python
Python Tricks 使用 pywinrm 远程控制 Windows 主机的方法
Jul 21 Python
如何用Python 加密文件
Sep 10 Python
Python collections模块的使用方法
Oct 09 Python
python爬虫中PhantomJS加载页面的实例方法
Nov 12 Python
Python 转移文件至云对象存储的方法
Feb 07 Python
解决tensorflow模型压缩的问题_踩坑无数,总算搞定
Mar 02 Python
利用Python读取微信朋友圈的多种方法总结
Aug 23 Python
详解Django框架中用户的登录和退出的实现
Jul 23 #Python
在Django的session中使用User对象的方法
Jul 23 #Python
Django的session中对于用户验证的支持
Jul 23 #Python
在Django的视图(View)外使用Session的方法
Jul 23 #Python
在Python的Django框架的视图中使用Session的方法
Jul 23 #Python
详解Python的Django框架中的Cookie相关处理
Jul 22 #Python
在Django中使用Sitemap的方法讲解
Jul 22 #Python
You might like
php 上传功能实例代码
2010/04/13 PHP
PHP在弹框中获取foreach中遍历的id值并传递给地址栏
2017/06/13 PHP
把JS与CSS写在同一个文件里的书写方法
2007/06/02 Javascript
js模拟弹出效果代码修正版
2008/08/07 Javascript
利用404错误页面实现UrlRewrite的实现代码
2008/08/20 Javascript
JS Date函数整理方便使用
2013/10/23 Javascript
ie浏览器使用js导出网页到excel并打印
2014/03/11 Javascript
JavaScript判断按钮被点击的方法
2015/12/13 Javascript
javascript实现任务栏消息提示的简单实例
2016/05/31 Javascript
详解Vue中状态管理Vuex
2017/05/11 Javascript
JS中使用textPath实现线条上的文字
2017/12/25 Javascript
Vue仿支付宝支付功能
2018/05/25 Javascript
JS的Ajax与后端交互数据的实例
2018/08/08 Javascript
angular6 利用 ngContentOutlet 实现组件位置交换(重排)
2018/11/02 Javascript
深入了解Vue.js 混入(mixins)
2020/07/23 Javascript
vue.js click点击事件获取当前元素对象的操作
2020/08/07 Javascript
python类的继承实例详解
2017/03/30 Python
Python模拟用户登录验证
2017/09/11 Python
Python高级特性切片(Slice)操作详解
2018/09/27 Python
django 使用全局搜索功能的实例详解
2019/07/18 Python
深入浅出CSS3 background-clip,background-origin和border-image教程
2011/01/27 HTML / CSS
美国眼镜网站:LensCrafters
2020/01/19 全球购物
第二层交换机和路由器的区别?第三层交换机和路由器的区别?
2013/05/23 面试题
优秀党支部事迹材料
2014/01/14 职场文书
应届生自荐信范文
2014/02/21 职场文书
学生自我评语大全
2014/04/18 职场文书
汽车服务工程专业自荐信
2014/09/02 职场文书
政风行风建设整改方案
2014/10/27 职场文书
2015纪念九一八事变84周年演讲稿
2015/03/19 职场文书
装配车间主任岗位职责
2015/04/08 职场文书
公司市场部岗位职责
2015/04/15 职场文书
关爱留守儿童捐款倡议书
2015/04/27 职场文书
学校计划生育责任书
2015/05/09 职场文书
公文写作:教你写“建议书”
2019/05/07 职场文书
Redis模仿手机验证码发送的实现示例
2021/11/02 Redis
浅谈css清除浮动(clearfix和clear)的用法
2023/05/21 HTML / CSS