django的每个对象权限的实现。

django-guardian的Python项目详细描述


https://travis-ci.org/django-guardian/django-guardian.svg?branch=devel

django-guardian是每个对象权限的实现[1]在上面 Django的授权后端

文件

在线文档可在https://django-guardian.readthedocs.io/找到。

要求

  • Python3.5+
  • 支持的Django版本(当前为2.1+)

travis ci测试django版本2.1、2.2和master。

安装

要安装django-guardian,只需运行:

pip install django-guardian

配置

我们需要将django-guardian挂接到我们的项目中。

  1. guardian放入设置模块中的INSTALLED_APPS
INSTALLED_APPS=(...'guardian',)
  1. 将额外的授权后端添加到settings.py
AUTHENTICATION_BACKENDS=('django.contrib.auth.backends.ModelBackend',# default'guardian.backends.ObjectPermissionBackend',)
  1. 通过运行以下命令创建guardian数据库表:

    python manage.py migrate
    

用法

在安装和项目挂钩之后,我们最终可以使用对象权限 用Django

让我们快速开始:

>>>fromdjango.contrib.auth.modelsimportUser,Group>>>jack=User.objects.create_user('jack','jack@example.com','topsecretagentjack')>>>admins=Group.objects.create(name='admins')>>>jack.has_perm('change_group',admins)False>>>fromguardian.modelsimportUserObjectPermission>>>UserObjectPermission.objects.assign_perm('change_group',jack,obj=admins)<UserObjectPermission:admins|jack|change_group>>>>jack.has_perm('change_group',admins)True

当然,我们这里的杰克探员不能在全球范围内change\u group

>>>jack.has_perm('change_group')False

管理集成

将这些模型的admin.ModelAdmin替换为GuardedModelAdmin。 在管理面板中应该有对象权限支持

例如:

fromdjango.contribimportadminfrommyapp.modelsimportAuthorfromguardian.adminimportGuardedModelAdmin# Old way:#class AuthorAdmin(admin.ModelAdmin):#    pass# With object permissions supportclassAuthorAdmin(GuardedModelAdmin):passadmin.site.register(Author,AuthorAdmin)
[1]Great paper about this feature is available at djangoadvent articles.

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
尝试通过java驱动程序连接时,mongodb服务器上的SSLhandshake失败   使用PlayFramework的Azure网站中的java Logback   java在另一个ArrayList中使用ArrayList处理复杂的JSON响应   java无法在另一台机器上运行eclipse tomcat中的war文件   java GZIPOutputStream有什么替代方案吗?   java Nashorn调试在Nashorn中运行的javascript   java文本短信未发送,即使toast显示已发送   java Hibernatesearch 5.0 spatial不确定是否在散列中存储lat/lon   java我想创建一个带有文本视图的计数器   java安卓:如何正确地同步资源   java使用mockito。当不知道方法调用的参数时   firebase Java使用HTTP v1发送错误字符的中文通知   java Hibernate无法映射到表?   java使用对象映射器解析复杂JSON   java Selenium Grid 2并行测试用例执行   java所有项目在列表视图中重复