在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 从远程服务器下载日志文件的程序
Feb 10 Python
Python实现图像几何变换
Jul 06 Python
详解Python的Twisted框架中reactor事件管理器的用法
May 25 Python
python PyTorch预训练示例
Feb 11 Python
TensorFlow 滑动平均的示例代码
Jun 19 Python
opencv python 2D直方图的示例代码
Jul 20 Python
详解Python:面向对象编程
Apr 10 Python
50行Python代码获取高考志愿信息的实现方法
Jul 23 Python
Python使用random模块生成随机数操作实例详解
Sep 17 Python
Python smtp邮件发送模块用法教程
Jun 15 Python
Python识别验证码的实现示例
Sep 30 Python
Python实现粒子群算法的示例
Feb 14 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遍历类中包含的所有元素的方法
2015/05/12 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
2017/08/31 PHP
Table冻结表头示例代码
2013/08/20 Javascript
简体中文转换繁体中文(实现代码)
2013/12/25 Javascript
js文件Cookie存取值示例代码
2014/02/20 Javascript
JavaScript实现网页截图功能
2014/10/16 Javascript
js html css实现复选框全选与反选
2016/10/09 Javascript
获取select的value、text值的简单示例(jquery与javascript)
2016/12/07 Javascript
利用vue+elementUI实现部分引入组件的方法详解
2017/11/22 Javascript
JavaScript new对象的四个过程实例浅析
2018/07/31 Javascript
Typescript的三种运行方式(小结)
2019/09/18 Javascript
浅谈Vue使用Cascader级联选择器数据回显中的坑
2020/10/31 Javascript
JS实现百度搜索框
2021/02/25 Javascript
[02:24]DOTA2痛苦女王 英雄基础教程
2013/11/26 DOTA
如何搜索查找并解决Django相关的问题
2014/06/30 Python
Python并发编程协程(Coroutine)之Gevent详解
2017/12/27 Python
Odoo中如何生成唯一不重复的序列号详解
2018/02/10 Python
Python从使用线程到使用async/await的深入讲解
2018/09/16 Python
Python如何发布程序的详细教程
2018/10/09 Python
python 保存float类型的小数的位数方法
2018/10/17 Python
python实现自动化上线脚本的示例
2019/07/01 Python
opencv python 图像轮廓/检测轮廓/绘制轮廓的方法
2019/07/03 Python
Python3多线程版TCP端口扫描器
2019/08/31 Python
TensorFlow获取加载模型中的全部张量名称代码
2020/02/11 Python
jupyter notebook更换皮肤主题的实现
2021/01/07 Python
利用HTML5实现使用按钮控制背景音乐开关
2015/09/21 HTML / CSS
Sixt美国租车:高端豪华车型自驾体验
2017/09/02 全球购物
ParcelABC西班牙:包裹运送和快递服务
2019/12/24 全球购物
shell程序中如何注释
2012/02/17 面试题
酒店节能减排方案
2014/05/26 职场文书
食堂标语大全
2014/06/11 职场文书
中华魂放飞梦想演讲稿
2014/08/26 职场文书
党的群众路线教育实践活动对照检查材料(教师)
2014/09/24 职场文书
2015年社区民政工作总结
2015/04/21 职场文书
工程质量保证书
2015/05/09 职场文书
忘记Grafana不要紧2种Grafana重置admin密码方法详细步骤
2022/04/07 Servers