2009-06-26 14 views
4

Gibt es eine Möglichkeit, ein Benutzermenü zu haben, das sich entsprechend den Berechtigungen ändert, die der Benutzergruppe zugewiesen sind, zu der ein Benutzer gehört? Ich denke an etwas, das auf der Ansichtsebene nach diesen Berechtigungen sucht, und entfernt auch Menüoptionen, zu denen ein Benutzer keine Berechtigung hat.Dynamisches Benutzermenü in Django

Antwort

9

Ja, es ist möglich, das Benutzerobjekt in der Vorlage für den Zugriff auf und prüfen Sie, ob die Benutzer wie dieses Personal :

Dies wäre ein Beispiel, wo Ihr Menü, wo li Elemente von Links. Der Admin-Link wird nur für Benutzer mit dem Status "is_staff" gerendert. Das gleiche könnte mit is_authenticated getan werden.

Django ist gebaut, um Logik und Präsentation getrennt zu haben, also wenn Sie eine feinere Kontrolle über das Menü machen möchten, würde ich vorschlagen, die Logik innerhalb der Ansicht zu tun, und stellen Sie dann eine Variable, die Sie einchecken können die Vorlage, um zu bestimmen, welche Menüs angezeigt werden sollen.

+0

Ich dachte in diesen Zeilen ... danke für die schnelle Hilfe –

+0

Auf einer Randnotiz, obwohl dies eine saubere Präsentation von verschiedenen Menüs für z.B. Benutzer vs Admins. Es ist genau das und NICHT ein Mittel zur Sicherheit. Die Leute können immer noch eine URL geben, die "/ admin" enthält ... Nur darauf achten, dass man sich die Dekorateure "@staff_member_required" und "@login_required" ansieht. – GerardJP

2

Zum größten Teil, django Admin gibt Ihnen nicht Links zu Dingen, die Sie nicht tun können.

Django Grappelli (a django Admin-Haut) implementiert eine Art von Seite verlinkt, wenn es das ist, was meinen Sie http://code.google.com/p/django-grappelli/