Access Denied Gracefully

Die Rechteverwaltung von Django ist im Vergleich zur Lokalisierung bestimmter Fehlermeldungen ausgesprochen transparent und einfach. Der Zugriff auf bestimmte Views lässt sich mit einer einzigen Zeile auf angemeldete Nutzer beschränken:

@login_required

Nutzt man auch die Benutzergruppen des Authentifizierungsmoduls, kann man den Zugriff mit einer simplen Lambda-Funktion einer bestimmten Benutzergruppe erlauben:

@user_passes_test(lambda u: (u and u.groups.filter(name='Studierende').count() == 1) or False)

Lässt man sich auch auf die automatisch generierten, modellbezogenen Rechte ein (wogegen nichts spricht), ist eine noch präzisere Zugriffssteuerung möglich:

@permission_required('consultation.add_reservation')