在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 httplib,smtplib使用方法
Sep 06 Python
python连接远程ftp服务器并列出目录下文件的方法
Apr 01 Python
python通过get,post方式发送http请求和接收http响应的方法
May 26 Python
浅析使用Python操作文件
Jul 31 Python
Python实现抢购IPhone手机
Feb 07 Python
numpy中实现ndarray数组返回符合特定条件的索引方法
Apr 17 Python
python读取有密码的zip压缩文件实例
Feb 08 Python
Python爬虫之UserAgent的使用实例
Feb 21 Python
tensorflow的计算图总结
Jan 12 Python
Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space
Feb 23 Python
python-xpath获取html文档的部分内容
Mar 06 Python
浅谈python多线程和多线程变量共享问题介绍
Apr 17 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
用Socket发送电子邮件(利用需要验证的SMTP服务器)
2006/10/09 PHP
探讨file_get_contents与curl效率及稳定性的分析
2013/06/06 PHP
浅析PHP原理之变量分离/引用(Variables Separation)
2013/08/09 PHP
浅谈PHP变量作用域以及地址引用问题
2013/12/27 PHP
PHP把网页保存为word文件的三种方法
2014/04/01 PHP
php采集中国代理服务器网的方法
2015/06/16 PHP
PHP编程实现csv文件导入mysql数据库的方法
2017/04/29 PHP
PHP实现简易用户登录系统
2020/07/10 PHP
jQuery新闻滚动插件 jquery.roller.js
2011/06/27 Javascript
快速查找数组中的某个元素并返回下标示例
2013/09/03 Javascript
JS获取当前网址、主机地址项目根路径
2013/11/19 Javascript
js简单的弹出框有关闭按钮
2014/05/05 Javascript
JS 对象属性相关(检查属性、枚举属性等)
2015/04/05 Javascript
在JavaScript应用中使用RequireJS来实现延迟加载
2015/07/01 Javascript
详解页面滚动值scrollTop在FireFox与Chrome浏览器间的兼容问题
2015/12/03 Javascript
Javascript设计模式之观察者模式(推荐)
2016/03/29 Javascript
easyui combobox开启搜索自动完成功能的实例代码
2016/11/08 Javascript
jQuery按需加载轮播图(web前端性能优化)
2017/02/17 Javascript
jQuery Autocomplete简介_动力节点Java学院整理
2017/07/17 jQuery
微信小程序显示下拉列表功能【附源码下载】
2017/12/12 Javascript
NodeJS父进程与子进程资源共享原理与实现方法
2018/03/16 NodeJs
对vuejs的v-for遍历、v-bind动态改变值、v-if进行判断的实例讲解
2018/08/27 Javascript
ES6知识点整理之模块化的应用详解
2019/04/15 Javascript
VUE项目axios请求头更改Content-Type操作
2020/07/24 Javascript
[50:27]OG vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.26
2018/08/30 DOTA
[02:42]岂曰无衣,与子同袍!DOTA2致敬每一位守护人
2020/02/17 DOTA
基于Python实现的扫雷游戏实例代码
2014/08/01 Python
Python tkinter模块中类继承的三种方式分析
2017/08/08 Python
python实现计算器功能
2019/10/31 Python
pytorch查看torch.Tensor和model是否在CUDA上的实例
2020/01/03 Python
英国女装网上商店:I Saw It First
2018/10/18 全球购物
英国现代家具和照明购物网站:Heal’s
2019/10/30 全球购物
六一节目主持词
2014/04/01 职场文书
学校运动会报道稿
2014/09/23 职场文书
土建技术员岗位职责
2015/04/11 职场文书
企业年会祝酒词
2015/08/11 职场文书