• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > Django中对通过测试的用户进行限制访问的方法

Django中对通过测试的用户进行限制访问的方法

作者:goldensun 字体:[增加 减小] 来源:互联网

goldensun 通过本文主要向大家介绍了django创建超级用户,django 用户注册,django用户注册登录,django用户管理系统,django创建用户等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

限制访问可以基于某种权限,某些检查或者为login视图提供不同的位置,这些实现方式大致相同。

一般的方法是直接在视图的 request.user 上运行检查。 例如,下面视图确认用户登录并是否有 polls.can_vote权限:

def vote(request):
 if request.user.is_authenticated() and request.user.has_perm('polls.can_vote')):
  # vote here
 else:
  return HttpResponse("You can't vote in this poll.")

</div>

并且Django有一个称为 user_passes_test 的简洁方式。它接受参数然后为你指定的情况生成装饰器。

def user_can_vote(user):
 return user.is_authenticated() and user.has_perm("polls.can_vote")

@user_passes_test(user_can_vote, login_url="/login/")
def vote(request):
 # Code here can assume a logged-in user with the correct permission.
 ...

</div>

user_passes_test 使用一个必需的参数: 一个可调用的方法,当存在 User 对象并当此用户允许查看该页面时返回 True 。 注意 user_passes_test 不会自动检查 User

    是否认证,你应该自己做这件事。

例子中我们也展示了第二个可选的参数 login_url ,它让你指定你的登录页面的URL(默认为 /accounts/login/ )。 如果用户没有通过测试,那么user_passes_test将把用户重定向到login_url

既然检查用户是否有一个特殊权限是相对常见的任务,Django为这种情形提供了一个捷径: permission_required() 装饰器。 使用这个装饰器,前面的例子可以改写为:

from django.contrib.auth.decorators import permission_required

@permission_required('polls.can_vote', login_url="/login/")
def vote(request):
 # ...

</div>

注意, permission_required() 也有一个可选的 login_url 参数, 这个参数默认为 '/accounts/login/' 。

限制通用视图的访问

在Django用户邮件列表中问到最多的问题是关于对通用视图的限制性访问。 为实现这个功能,你需要自己包装视图,并且在URLconf中,将你自己的版本替换通用视图:

from django.contrib.auth.decorators import login_required
from django.views.generic.date_based import object_detail

@login_required
def limited_object_detail(*args, **kwargs):
 return object_detail(*args, **kwargs)

</div>

当然, 你可以用任何其他限定修饰符来替换 login_required 。

</div>

您可能想查找下面的文章:

  • 在Django中进行用户注册和邮箱验证的方法
  • Django中对通过测试的用户进行限制访问的方法
  • 在Django中限制已登录用户的访问的方法
  • 详解Django框架中用户的登录和退出的实现
  • Django的session中对于用户验证的支持
  • Django中对通过测试的用户进行限制访问的方法
  • 在Django中限制已登录用户的访问的方法
  • 详解Django框架中用户的登录和退出的实现
  • Django的session中对于用户验证的支持

相关文章

  • Python虚拟环境Virtualenv使用教程
  • Python实现简单的可逆加密程序实例
  • Python最长公共子串算法实例
  • Centos5.x下升级python到python2.7版本教程
  • python解析中国天气网的天气数据
  • 使用Python保存网页上的图片或者保存页面为截图
  • Python多线程学习资料
  • python网络编程学习笔记(六):Web客户端访问
  • 使用Python脚本操作MongoDB的教程
  • 简单谈谈python中的多进程

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Python采用socket模拟TCP通讯的实现方法
    • CentOS安装pillow报错的解决方法
    • Python的randrange()方法使用教程
    • Python中转换角度为弧度的radians()方法
    • 在Python中使用成员运算符的示例
    • python复制与引用用法分析
    • Python实现给qq邮箱发送邮件的方法
    • 从零学Python之入门(二)基本数据类型
    • python通过floor函数舍弃小数位的方法
    • 使用Python进行稳定可靠的文件操作详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有