在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 04 Python
使用Python来开发Markdown脚本扩展的实例分享
Mar 04 Python
python+selenium+autoit实现文件上传功能
Aug 23 Python
python3实现全角和半角字符转换的方法示例
Sep 21 Python
Python基于OpenCV实现视频的人脸检测
Jan 23 Python
python装饰器-限制函数调用次数的方法(10s调用一次)
Apr 21 Python
Python3 使用map()批量的转换数据类型,如str转float的实现
Nov 29 Python
python Opencv计算图像相似度过程解析
Dec 03 Python
Python 一行代码能实现丧心病狂的功能
Jan 18 Python
tensorflow保持每次训练结果一致的简单实现
Feb 17 Python
PyCharm配置anaconda环境的步骤详解
Jul 31 Python
使用Pytorch训练two-head网络的操作
May 28 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下实现一个阿拉伯数字转中文数字的函数
2008/07/10 PHP
php trim 去除空字符的定义与语法介绍
2010/05/31 PHP
解析PHP中$_FILES的使用以及注意事项
2013/07/05 PHP
yii2缓存Caching基本用法示例
2016/07/18 PHP
jquery中ajax调用json数据的使用说明
2011/03/17 Javascript
jQuery代码优化 遍历篇
2011/11/01 Javascript
利用jQuery简单实现产品展示图片左右滚动功能(示例代码)
2014/01/02 Javascript
Javascript高级技巧分享
2014/02/25 Javascript
用JavaScript实现PHP的urlencode与urldecode函数
2015/08/13 Javascript
jQuery实现的简单提示信息插件
2015/12/08 Javascript
针对BootStrap中tabs控件的美化和完善(推荐)
2016/07/06 Javascript
网络传输协议(http协议)
2016/11/18 Javascript
React Native使用Modal自定义分享界面的示例代码
2017/10/31 Javascript
简单的vuex 的使用案例笔记
2018/04/13 Javascript
使vue实现jQuery调用的两种方法
2019/05/12 jQuery
vue 实现v-for循环回来的数据动态绑定id
2019/11/07 Javascript
[01:11:35]Liquid vs LGD 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python连接MySQL数据库实例分析
2015/05/12 Python
利用python求相邻数的方法示例
2017/08/18 Python
Python+selenium点击网页上指定坐标的实例
2019/07/05 Python
利用python实现周期财务统计可视化
2019/08/25 Python
numpy库ndarray多维数组的维度变换方法(reshape、resize、swapaxes、flatten)
2020/04/28 Python
草莓网官网:StrawberryNET
2019/08/21 全球购物
荷兰照明、灯具和配件网上商店:dmlights
2019/08/25 全球购物
会计自我鉴定
2013/11/02 职场文书
高中班长自我鉴定
2013/12/20 职场文书
市场营销管理制度
2014/01/29 职场文书
环境科学专业优秀毕业生自荐书
2014/02/03 职场文书
烹调加工管理制度
2014/02/04 职场文书
群众路线教育实践活动心得体会
2014/03/07 职场文书
征兵宣传标语
2014/06/20 职场文书
公共场所禁烟标语
2014/06/25 职场文书
教学改革问题查摆整改措施
2014/09/27 职场文书
JAVA SpringMVC实现自定义拦截器
2022/03/16 Python
Python作用域和名称空间的详细介绍
2022/04/13 Python
解决IDEA翻译插件Translation报错更新TTK失败不能使用
2022/04/24 Python