web-dev-qa-db-fra.com

Groupes d'utilisateurs et autorisations

J'ai besoin de mettre en œuvre des droits d'utilisateur pour les groupes d'utilisateurs (assez similaires aux groupes Facebook). Par exemple, chaque groupe peut avoir des membres avec des droits tels que: can_post, can_delete, can_ban, etc. Bien sûr, un utilisateur peut être membre de plusieurs groupes et un groupe peut avoir de nombreux utilisateurs différents avec des droits différents. De quels modèles ai-je besoin pour cette fonctionnalité?

31
duke_nukem

Django a un système de groupes intégré. Chaque fois que vous avez une question comme celle-ci, je recommande recherche dans les documents Django , qui sont complets, utiles et bien écrits.

Tant que vous utilisez le Django.contrib.auth app, vous avez accès aux groupes. Vous pouvez ensuite attribuer des autorisations à ces groupes.

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)
64
Jordan Reiter