【问题标题】:User groups and permissions用户组和权限
【发布时间】:2012-09-05 19:13:30
【问题描述】:

我需要为用户组实施用户权限(非常类似于 facebook 组)。例如,每个组可以拥有具有以下权限的成员:can_post、can_delete、can_ban 等。当然,一个用户可以是多个组的成员,并且组可以拥有多个具有不同权限的不同用户。 我需要哪些型号才能实现此功能?

【问题讨论】:

    标签: python django django-models django-permissions usergroups


    【解决方案1】:

    Django 有一个内置的组系统。每当您有这样的问题时,我推荐searching the Django docs,它内容广泛、有用且写得很好。

    只要您使用django.contrib.auth 应用程序,您就可以访问群组。然后,您可以为这些组分配权限。

    from django.contrib.auth.models import User, Group, Permission
    from django.contrib.contenttypes.models import ContentType
    
    content_type = ContentType.objects.get(app_label='myapp', model='BlogPost')
    permission = Permission.objects.create(codename='can_publish',
                                           name='Can Publish Posts',
                                           content_type=content_type)
    user = User.objects.get(username='duke_nukem')
    group = Group.objects.get(name='wizard')
    group.permissions.add(permission)
    user.groups.add(group)
    

    【讨论】:

    • 这段代码你一般放在哪个文件里?
    • 上面的代码创建了记录,所以你可以在 shell 中运行它。如果您想分发或部署您的应用程序,您需要对其进行设置,以便保存此初始数据。我相信您也可以在网站的管理员中修改它们。
    • 是的,但是您如何部署它?固定装置已折旧:-?
    • 根据当前文档,夹具似乎仍然可以接受:docs.djangoproject.com/en/1.9/howto/initial-data 事实上,弃用通知似乎已被删除。所以 Django 的人根本不清楚支持到底是什么。
    • 自定义权限可以在模型的Meta 类中定义,它们将在manage.py migrate 上自动创建。更多细节在the docs
    猜你喜欢
    • 2011-03-07
    • 2015-07-16
    • 1970-01-01
    • 2014-11-22
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多