164 votes

Dans Django, comment vérifier si un utilisateur fait partie d'un certain groupe ?

J'ai créé un groupe personnalisé dans le site d'administration de Django.

Dans mon code, je veux vérifier si un utilisateur est dans ce groupe. Comment dois-je m'y prendre ?

0voto

rodolfodalvi Points 1

Utilisez ça :

{% for group in request.user.groups.all %}
    {% if group.name == 'GroupName' %}
    {% endif %}
{% endfor %}

0voto

Philipp Zedler Points 401

En une ligne :

'Groupname' in user.groups.values_list('name', flat=True)

Cette évaluation donne soit True o False .

4 votes

C'est inefficace, car cela va récupérer beaucoup plus de données, et ensuite les traiter du côté de django. Il est préférable d'utiliser .exists() de laisser le db faire le travail.

0voto

Mohammad Points 269

J'ai procédé de la manière suivante. Cela semble inefficace mais je n'avais pas d'autre solution en tête :

@login_required
def list_track(request):

usergroup = request.user.groups.values_list('name', flat=True).first()
if usergroup in 'appAdmin':
    tracks = QuestionTrack.objects.order_by('pk')
    return render(request, 'cmit/appadmin/list_track.html', {'tracks': tracks})

else:
    return HttpResponseRedirect('/cmit/loggedin')

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X