Kann ich die Berechtigungsprüfung der Auth-Anwendung in einer Vorlage in Django verwenden? (Ich möchte ein einfaches Formular am Ende der Vorlage für privilegierte Benutzer anzeigen.)
Und was noch wichtiger ist, sollte ich es überhaupt tun oder ist dies nicht der "Django-Weg"?
django
django-authentication
Daniel
quelle
quelle
Antworten:
Wenn Sie nach Berechtigungen in Vorlagen suchen möchten, reicht der folgende Code aus:
{% if perms.app_label.can_do_something %} <form here> {% endif %}
Dabei bezieht sich Modell auf das Modell, für das der Benutzer Berechtigungen benötigt, um das Formular anzuzeigen.
Weitere Beispiele finden Sie unter https://docs.djangoproject.com/de/stable/topics/auth/default/#permissions .
(Dies erfordert den folgenden Kontext Prozessor aktiviert werden:
django.contrib.auth.context_processors.auth
)quelle
perms.app_label.foobar
immer der Fall ist, auch wenn Sie den Berechtigungsnamen falsch geschrieben haben.Getestet auf Django 2.0 +
Wenn Sie alle Berechtigungen des angemeldeten Benutzers in Ihrer Vorlage (.html) anzeigen möchten, drucken Sie:
Oder
{{ perms }}
Um zu überprüfen, ob der Benutzer über die Berechtigung verfügt, verwenden Sie:
Z.B :
Hier: Nutzung ist mein App-Name. Rechnung ist ein Modellname.
Beachten Sie, dass es im Allgemeinen vier Arten von Berechtigungen gibt:
Wenn Sie alle Berechtigungen anzeigen möchten, die ein Benutzer aufgrund der Gruppen hat, denen er angehört, starten Sie die Django-Shell ...
user = User.objects.get(username='somename') user.get_group_permissions()
Hier sind alle aufgeführten Berechtigungen auf die Gruppen zurückzuführen, zu denen er gehört.
quelle
Wenn Sie mehr Granularität beim Überprüfen von Dauerwellen benötigen (z. B. für ein bestimmtes Objekt), lesen Sie diese Erweiterung: http://django-authority.readthedocs.org/en/latest/check_templates/
quelle
Es tut mir leid, diesen Beitrag "ausgegraben" zu haben, aber ich habe ein Problem mit Berechtigungen. Siehe meinen Beitrag: Django: Logik in Vorlage mit Berechtigungen nicht gut angewendet (Dauerwelle)
Da Arindam sich mit diesem Konzept sehr wohl fühlt, hoffe ich, dass er oder andere mir helfen können
Perms gelten nicht, auch wenn der Wert korrekt ist, wenn ich in meiner Vorlage nach {{perms}} suche. Es wird ein Objekt zurückgegeben, aber nicht die Liste der Berechtigungen, wenn ich nach {{perms.randomization.can_randomize}} suche. Es wird False (oder True zurückgegeben ) das ist der gute Wert, den meine App als Randomisierung bezeichnet, und ich definiere die Berechtigung can_randomize in Randomisierungsmodellen (unter Verwendung von Meta), die Teil meiner Randomisierungs-App sind
Ich überprüfe settings.py, aber alle Nähte sind in Ordnung
quelle