Puis-je utiliser la vérification des autorisations de l'application Auth dans un modèle dans Django? (Je souhaite afficher un formulaire simple à la fin du modèle pour les utilisateurs privilégiés)
Et plus important encore, devrais-je le faire ou est-ce que ce n'est pas la "manière Django"?
django
django-authentication
Daniel
la source
la source
Réponses:
Si vous cherchez à vérifier les autorisations dans les modèles, le code suivant suffirait:
{% if perms.app_label.can_do_something %} <form here> {% endif %}
Où modèle fait référence au modèle pour lequel l'utilisateur a besoin d'autorisations pour voir le formulaire.
Reportez-vous à https://docs.djangoproject.com/en/stable/topics/auth/default/#permissions pour plus d'exemples.
(Cela nécessite le processeur de contexte suivant à activer:
django.contrib.auth.context_processors.auth
)la source
perms.app_label.foobar
sera toujours vrai, même si vous avez mal orthographié le nom de l'autorisation.Testé sur Django 2.0 +
Si vous souhaitez voir toutes les autorisations dont dispose l'utilisateur connecté, sur votre modèle (.html), imprimez:
Ou
{{ perms }}
Afin de vérifier si l'utilisateur a l'autorisation, utilisez:
Par exemple :
Ici: L' utilisation est le nom de mon application. La facture est un nom de modèle.
Notez qu'en général, il y aura 4 types d'autorisations:
De plus, si vous souhaitez voir toutes les autorisations d'un utilisateur en raison des groupes auxquels il appartient, lancez le shell Django ...
user = User.objects.get(username='somename') user.get_group_permissions()
Ici, toutes les autorisations répertoriées sont dues aux groupes auxquels il appartient.
la source
Si vous avez besoin de plus de granularité dans la vérification des perms (sur un objet particulier par exemple), consultez cette extension: http://django-authority.readthedocs.org/en/latest/check_templates/
la source
désolé de `` déterrer '' ce post mais j'ai un problème lié aux permissions voir mon post: Django: la logique n'est pas bien appliquée dans le template utilisant les permissions (perm
comme Arindam semble être très à l'aise avec ce concept, j'espère que lui ou un autre pourra m'aider
les perms ne s'appliquent pas même si la valeur est correcte lorsque je recherche {{perms}} dans mon modèle, il renvoie un objet mais pas la liste des autorisations si je recherche {{perms.randomization.can_randomize}} il renvoie False (ou True ) qui est la bonne valeur que mon application s'appelle randomisation et je définis l'autorisation can_randomize dans les modèles de randomisation (en utilisant meta) qui fait partie de mon application de randomisation
Je vérifie settings.py mais toutes les coutures sont ok
la source