在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实现快速排序算法及去重的快速排序的简单示例
Jun 26 Python
Python编程使用*解包和itertools.product()求笛卡尔积的方法
Dec 18 Python
Python3实现的字典遍历操作详解
Apr 18 Python
在python带权重的列表中随机取值的方法
Jan 23 Python
Django实现学员管理系统
Feb 26 Python
PyCharm-错误-找不到指定文件python.exe的解决方法
Jul 01 Python
Python企业编码生成系统之系统主要函数设计详解
Jul 26 Python
pytorch中nn.Conv1d的用法详解
Dec 31 Python
使用tensorflow实现VGG网络,训练mnist数据集方式
May 26 Python
Python制作一个仿QQ办公版的图形登录界面
Sep 22 Python
如何利用pycharm进行代码更新比较
Nov 04 Python
用pushplus+python监控亚马逊到货动态推送微信
Jan 29 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
很实用的一个完整email发送程序
2006/10/09 PHP
ThinkPHP权限认证Auth实例详解
2014/07/22 PHP
PHP快速生成各种信息提示框的方法
2016/02/03 PHP
ThinkPHP表单令牌错误的相关解决方法分析
2016/05/20 PHP
PHP中检索字符串的方法分析【strstr与substr_count方法】
2017/02/17 PHP
许愿墙中用到的函数
2006/10/07 Javascript
使两个iframe的高度与内容自适应,且相等
2006/11/20 Javascript
jquery imgareaselect 使用利用js与程序结合实现图片剪切
2009/07/30 Javascript
基于jquery的可多选的下拉列表框
2012/07/20 Javascript
javascript真的不难-回顾一下基础知识
2013/01/15 Javascript
JS判断数组中是否有重复值得三种实用方法
2013/08/16 Javascript
node.js中的fs.write方法使用说明
2014/12/15 Javascript
自定义Angular指令与jQuery实现的Bootstrap风格数据双向绑定的单选与多选下拉框
2015/12/12 Javascript
javascript每日必学之继承
2016/02/23 Javascript
jquery获取table指定行和列的数据方法(当前选中行、列)
2016/11/07 Javascript
详解ES6中的let命令
2020/04/05 Javascript
jQuery实现圣诞节礼物动画案例解析
2016/12/25 Javascript
mescroll.js上拉加载下拉刷新组件使用详解
2017/11/13 Javascript
windows下更新npm和node的方法
2017/11/30 Javascript
Vue2 添加数据可视化支持的方法步骤
2019/01/02 Javascript
微信小程序自定义联系人弹窗
2020/05/26 Javascript
JavaScript JSON使用原理及注意事项
2020/07/30 Javascript
浅析Python3爬虫登录模拟
2018/02/07 Python
python:pandas合并csv文件的方法(图书数据集成)
2018/04/12 Python
python 正则表达式贪婪模式与非贪婪模式原理、用法实例分析
2019/10/14 Python
python为Django项目上的每个应用程序创建不同的自定义404页面(最佳答案)
2020/03/09 Python
Django 删除upload_to文件的步骤
2020/03/30 Python
解决python Jupyter不能导入外部包问题
2020/04/15 Python
Python如何实现FTP功能
2020/05/28 Python
德国购买健身器材:AsVIVA
2017/08/09 全球购物
德国领先的大尺码和超大尺码男装在线零售商:Bigtex
2019/06/22 全球购物
2019年c语言经典面试题目
2016/08/17 面试题
2014年大学庆元旦迎新年活动方案
2014/03/09 职场文书
企业员工薪酬方案
2014/06/04 职场文书
高三语文复习计划
2015/01/19 职场文书
Go并发4种方法简明讲解
2022/04/06 Golang