Django的按对象权限实现。
项目描述
django-guardian是在Django授权后端之上实现的对象权限[1]
文档
在线文档可在 https://django-guardian.readthedocs.io/ 查找。
要求
Python 3.5+
支持的 Django 版本(目前为 2.2+)
GitHub Actions 在 Django 版本 2.2、3.0、3.1、3.2 和 main 上运行测试。
安装
要安装 django-guardian,只需运行
pip install django-guardian
配置
我们需要将 django-guardian 集成到我们的项目中。
将 guardian 添加到设置模块的 INSTALLED_APPS 中
INSTALLED_APPS = (
...
'guardian',
)
在 settings.py 中添加额外的授权后端
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend', # default
'guardian.backends.ObjectPermissionBackend',
)
通过运行以下命令创建 guardian 数据库表
python manage.py migrate
用法
安装和项目挂钩后,我们终于可以使用 Django 的对象权限了。
让我们快速开始
>>> from django.contrib.auth.models import User, Group
>>> jack = User.objects.create_user('jack', 'jack@example.com', 'topsecretagentjack')
>>> admins = Group.objects.create(name='admins')
>>> jack.has_perm('change_group', admins)
False
>>> from guardian.models import UserObjectPermission
>>> UserObjectPermission.objects.assign_perm('change_group', jack, obj=admins)
<UserObjectPermission: admins | jack | change_group>
>>> jack.has_perm('change_group', admins)
True
当然,我们的代理杰克在这里无法全局地 change_group
>>> jack.has_perm('change_group')
False
管理员集成
对于需要在管理员面板中支持对象权限的那些模型,将 admin.ModelAdmin 替换为 GuardedModelAdmin
例如
from django.contrib import admin
from myapp.models import Author
from guardian.admin import GuardedModelAdmin
# Old way:
#class AuthorAdmin(admin.ModelAdmin):
# pass
# With object permissions support
class AuthorAdmin(GuardedModelAdmin):
pass
admin.site.register(Author, AuthorAdmin)
项目详情
下载文件
下载适合您平台文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。
源分布
django-guardian-2.4.0.tar.gz (159.0 kB 查看散列值)
构建分布
django_guardian-2.4.0-py3-none-any.whl (106.1 kB 查看散列值)
关闭
django-guardian-2.4.0.tar.gz 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | c58a68ae76922d33e6bdc0e69af1892097838de56e93e78a8361090bcd9f89a0 |
|
MD5 | 6e961a95b2fe10c0f795b3f3d313b20c |
|
BLAKE2b-256 | 6f4cd1f6923a0ad7f16c403a54c09e94acb76ac6c3765e02523fb09b2b03e1a8 |
关闭
django_guardian-2.4.0-py3-none-any.whl的哈希值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 440ca61358427e575323648b25f8384739e54c38b3d655c81d75e0cd0d61b697 |
|
MD5 | dfe84f444671fd8769099fb6e7746a6a |
|
BLAKE2b-256 | a225869df12e544b51f583254aadbba6c1a95e11d2d08edeb9e58dd715112db5 |