在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中global与nonlocal比较
Nov 21 Python
Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例
Mar 15 Python
如何利用python查找电脑文件
Apr 27 Python
python连接mongodb密码认证实例
Oct 16 Python
Python学习笔记基本数据结构之序列类型list tuple range用法分析
Jun 08 Python
Kali Linux安装ipython2 和 ipython3的方法
Jul 11 Python
Django-rest-framework中过滤器的定制实例
Apr 01 Python
Pytorch数据拼接与拆分操作实现图解
Apr 30 Python
基于python计算滚动方差(标准差)talib和pd.rolling函数差异详解
Jun 08 Python
详解torch.Tensor的4种乘法
Sep 03 Python
python批量检查两个对应的txt文件的行数是否一致的实例代码
Oct 31 Python
CocosCreator ScrollView优化系列之分帧加载
Apr 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 处理图片的类实现代码
2009/10/23 PHP
php用正则表达式匹配中文实例详解
2013/11/06 PHP
thinkPHP框架动态配置用法实例分析
2018/06/14 PHP
Laravel 解决419错误 -ajax请求错误的问题(CSRF验证)
2019/10/25 PHP
jQuery删除节点的三个方法即remove()detach()和empty()
2013/12/27 Javascript
在HTML代码中使用JavaScript代码的例子
2014/10/16 Javascript
node.js中的console.dir方法使用说明
2014/12/10 Javascript
简单谈谈javascript中的变量、作用域和内存问题
2015/08/30 Javascript
javascript宿主对象之window.navigator详解
2016/09/07 Javascript
Vue.js每天必学之指令系统与自定义指令
2016/09/07 Javascript
Ajax和Comet技术总结
2017/02/19 Javascript
jquery事件与绑定事件
2017/03/16 Javascript
weui框架实现上传、预览和删除图片功能代码
2017/08/24 Javascript
Vue-router 类似Vuex实现组件化开发的示例
2017/09/15 Javascript
Vue使用枚举类型实现HTML下拉框步骤详解
2018/02/05 Javascript
详解JSON Web Token 入门教程
2018/07/30 Javascript
javascript实现5秒倒计时并跳转功能
2019/06/20 Javascript
使用Easyui实现查询条件的后端传递并自动刷新表格的两种方法
2019/09/09 Javascript
Layui弹出层 加载 做编辑页面的方法
2019/09/16 Javascript
微信小程序事件流原理解析
2019/11/27 Javascript
JavaScript进阶(一)变量声明提升实例分析
2020/05/09 Javascript
闭包在python中的应用之translate和maketrans用法详解
2014/08/27 Python
Django项目中包含多个应用时对url的配置方法
2018/05/30 Python
Python使用sorted对字典的key或value排序
2018/11/15 Python
Python+OpenCV实现将图像转换为二进制格式
2020/01/09 Python
如何定义TensorFlow输入节点
2020/01/23 Python
将python字符串转化成长表达式的函数eval实例
2020/05/11 Python
购房意向书范本
2014/04/01 职场文书
初中班主任寄语
2014/04/04 职场文书
大学新生军训自我鉴定
2014/09/18 职场文书
专升本学生毕业自我鉴定
2014/10/04 职场文书
2015年学校财务工作总结
2015/05/19 职场文书
2015年中职班主任工作总结
2015/05/25 职场文书
教师听课学习心得体会
2016/01/15 职场文书
导游词之日本富士山
2020/01/06 职场文书
「睡美人」爱洛公主粘土人开订
2022/03/22 日漫