在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 ORM框架SQLAlchemy学习笔记之关系映射实例
Jun 10 Python
介绍Python的Django框架中的静态资源管理器django-pipeline
Apr 25 Python
Python基于有道实现英汉字典功能
Jul 25 Python
Python 自动化表单提交实例代码
Jun 08 Python
Python3 tkinter 实现文件读取及保存功能
Sep 12 Python
Python3将数据保存为txt文件的方法
Sep 12 Python
pytorch构建多模型实例
Jan 15 Python
.dcm格式文件软件读取及python处理详解
Jan 16 Python
keras训练浅层卷积网络并保存和加载模型实例
Jul 02 Python
Python 保存加载mat格式文件的示例代码
Aug 04 Python
Spy++的使用方法及下载教程
Jan 29 Python
学点简单的Django之第一个Django程序的实现
Feb 24 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 项目的方法
2007/01/02 PHP
Yii实现多按钮保存与提交的方法
2014/12/03 PHP
PHP入门教程之PHP操作MySQL的方法分析
2016/09/11 PHP
PHPMailer发送邮件
2016/12/28 PHP
laravel清除视图缓存的代码
2019/10/23 PHP
PHP扩展安装方法步骤解析
2020/11/24 PHP
js 立即调用的函数表达式如何写
2014/01/12 Javascript
编写自己的jQuery提示框(Tip)插件
2015/02/05 Javascript
12306验证码破解思路分享
2015/03/25 Javascript
浅谈jQuery构造函数分析
2015/05/11 Javascript
javascript比较两个日期相差天数的方法
2015/07/24 Javascript
JQuery标签页效果的两个实例讲解(4)
2015/09/17 Javascript
JS显示日历和天气的方法
2016/03/01 Javascript
gulp-htmlmin压缩html的gulp插件实例代码
2016/06/06 Javascript
Angular在一个页面中使用两个ng-app的方法
2017/02/20 Javascript
完美实现js选项卡切换效果(一)
2017/03/08 Javascript
Vue ElementUI之Form表单验证遇到的问题
2017/08/21 Javascript
js 判断一个数字是不是2的n次方幂的实例
2017/11/26 Javascript
JavaScript 截取字符串代码实例
2019/09/05 Javascript
vue获取form表单的值示例
2019/10/29 Javascript
Kettle中使用JavaScrip调用jar包对文件内容进行MD5加密的操作方法
2020/09/04 Javascript
[04:03][TI9趣味短片] 小鸽子茶话会
2019/08/20 DOTA
[45:16]完美世界DOTA2联赛PWL S3 Magma vs Phoenix 第一场 12.12
2020/12/16 DOTA
python 从远程服务器下载日志文件的程序
2013/02/10 Python
python更新列表的方法
2015/07/28 Python
python中string模块各属性以及函数的用法介绍
2016/05/30 Python
浅谈python为什么不需要三目运算符和switch
2016/06/17 Python
Python基于Matplotlib库简单绘制折线图的方法示例
2017/08/14 Python
如何使用Python的Requests包实现模拟登陆
2018/04/27 Python
python url 参数修改方法
2018/12/26 Python
用python爬取历史天气数据的方法示例
2019/12/30 Python
配置python的编程环境之Anaconda + VSCode的教程
2020/03/29 Python
Django实现后台上传并显示图片功能
2020/05/29 Python
python如何控制进程或者线程的个数
2020/10/16 Python
python+selenium自动化实战携带cookies模拟登陆微博
2021/01/19 Python
屈臣氏菲律宾官网:Watsons菲律宾
2020/06/30 全球购物