Django:如何在不使用默认管理员的情况下管理组和权限
Django: How to manage groups and permission without using default admin
我正在根据需要在自定义模板中管理用户、组和权限的要求开发 Django 项目。所以我没有使用默认的管理仪表板。
我已经完成了用户创建模块,现在我想为用户分配权限和组。
我还没有覆盖或自定义任何 auth Model
。但将来我需要自定义 User Model
例如一些额外的字段等
我首先想到的是从 auth_permission
table 中删除所有权限并添加我的自定义权限。
所以我必须做以下事情:
- 创建群组
- 权限列表
- 为每个组分配权限
- 为每个用户分配组或权限
我对这些事情有些担心。
如果我删除了所有权限,项目可以吗?
用于验证权限的 Django 函数 has_perm 可以工作吗?
我可以为它做一些不同的事情吗?
需要一些健康提示。
更新:
我只想向管理员显示我的自定义权限,如 perm1、perm2。目前还有其他许多权限。
谢谢
"If I have deleted all permissions, will it be OK for project?"
如果您尝试删除现有权限,django 可能会重新创建它们,或者您可能 运行 在创建新模型时遇到麻烦。我不确定何时获取 created/recreated 的详细信息,但 django 对您创建的每个模型都有 default permissions。
"Django functions for validate permissions like has_perm would work?"
只要你通过Programmatically creating permissions or by putting Custom Permissions in a model's Meta class you should be able to use them like any other permissions. Specifically I mean you should be able to use user.has_perm and the permission_required装饰器创建权限。
"Can I do some different thing for it?"
如果您只想显示 user.user_permissions 之类的某些权限,我建议您过滤获得的结果,而不是试图摆脱现有权限。像下面这样的东西是合适的:
filter_show_permissions = ["perm_a", "perm_b", ...]
filtered_permissions = [perm for perm in user.user_permissions
if perm in filter_show_permissions]
我正在根据需要在自定义模板中管理用户、组和权限的要求开发 Django 项目。所以我没有使用默认的管理仪表板。
我已经完成了用户创建模块,现在我想为用户分配权限和组。
我还没有覆盖或自定义任何 auth Model
。但将来我需要自定义 User Model
例如一些额外的字段等
我首先想到的是从 auth_permission
table 中删除所有权限并添加我的自定义权限。
所以我必须做以下事情:
- 创建群组
- 权限列表
- 为每个组分配权限
- 为每个用户分配组或权限
我对这些事情有些担心。
如果我删除了所有权限,项目可以吗?
用于验证权限的 Django 函数 has_perm 可以工作吗?
我可以为它做一些不同的事情吗?
需要一些健康提示。
更新: 我只想向管理员显示我的自定义权限,如 perm1、perm2。目前还有其他许多权限。
谢谢
"If I have deleted all permissions, will it be OK for project?"
如果您尝试删除现有权限,django 可能会重新创建它们,或者您可能 运行 在创建新模型时遇到麻烦。我不确定何时获取 created/recreated 的详细信息,但 django 对您创建的每个模型都有 default permissions。
"Django functions for validate permissions like has_perm would work?"
只要你通过Programmatically creating permissions or by putting Custom Permissions in a model's Meta class you should be able to use them like any other permissions. Specifically I mean you should be able to use user.has_perm and the permission_required装饰器创建权限。
"Can I do some different thing for it?"
如果您只想显示 user.user_permissions 之类的某些权限,我建议您过滤获得的结果,而不是试图摆脱现有权限。像下面这样的东西是合适的:
filter_show_permissions = ["perm_a", "perm_b", ...]
filtered_permissions = [perm for perm in user.user_permissions
if perm in filter_show_permissions]