python - 如何在 Django 项目设置期间创建组和分配权限?

标签 python django

我知道我可以创建用户组并从 django 项目的管理区域为他们分配权限。我还可以通过从 django 的 auth 模块导入 GroupPermission 模型来创建一个组并为其分配权限。

我想知道在设置项目时是否有任何方法可以创建组并为其分配权限。因此,如果我有以下用户类型,AdminDeveloperTesterProject Manager。它们基本上是具有不同权限级别的用户组。我没有自定义 User 模型,只能通过分配给他们的组来区分。那么有没有一种方法可以创建这些组并为它们分配所需的权限,就像在我运行 python manage.py migrate 时为管理员创建权限一样?

最佳答案

你可以定义一个 post_migrate 创建所需的信号 UserGroup模型实例(如果它们尚不存在)。

当您使用 python manage.py startapp <app_name> 创建应用程序时, 它创建一个 AppConfig apps.py 文件中的类。

您可以在 AppConfig 中指定调用哪个信号类定义。假设信号称为 populate_models .在这种情况下,将 AppConfig 修改为如下所示:

from django.apps import AppConfig
from django.db.models.signals import post_migrate

class AppConfig(AppConfig):
    name = 'app'

    def ready(self):
        from .signals import populate_models
        post_migrate.connect(populate_models, sender=self)

并在 signals.py 中定义 populate_models功能。

def populate_models(sender, **kwargs):
    from django.contrib.auth.models import User
    from django.contrib.auth.models import group
    # create groups
    # assign permissions to groups
    # create users

关于python - 如何在 Django 项目设置期间创建组和分配权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42743825/

相关文章:

python - model.py 更改后 Django 站点预览未更新

python - 读取文件并跟踪 "friends"的代码

python - 有没有办法使用 Python Win32com 模块读取任何本地 PST 文件并将消息导出为 MSG 文件?

django - 如何在 Django 中将任何 API 请求从 http 重定向到 https?

python - 尝试执行迁移时模型未处理的挂起操作

python - 将邮政编码转换为美国时区

python - 使用 psycopg2 和 Lambda 更新 Redshift (Python)

django - MongoEngine:用 upsert/update_one 替换 get_or_create

python - Django 缓存导致数据库中出现重复键错误?

python - Django - 在模板中显示数据