• 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学习数据结构实例代码
  • Python3遍历目录树实现方法
  • 深入解析Python中的变量和赋值运算符
  • Python greenlet实现原理和使用示例
  • python操作MySQL数据库的方法分享
  • python文件与目录操作实例详解
  • Python常用模块用法分析
  • 深入解析Python的Tornado框架中内置的模板引擎
  • Python正则表达式如何进行字符串替换实例
  • python实现的AES双向对称加密解密与用法分析

文章分类

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

最近更新的内容

    • python修改注册表终止360进程实例
    • Python中优化NumPy包使用性能的教程
    • 在Python的Django框架中生成CSV文件的方法
    • python实现斐波那契递归函数的方法
    • python logging类库使用例子
    • Django小白教程之Django用户注册与登录
    • python通过pil将图片转换成黑白效果的方法
    • Python写的一个定时重跑获取数据库数据
    • python下paramiko模块实现ssh连接登录Linux服务器
    • python 遍历字符串(含汉字)实例详解

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

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