Dies funktioniert für mich auf meinem 'Projekt' table/model:
Offensichtlich ändern Sie das add_project zum add_ [was auch immer Ihr Modell/Tabelle ist]. Um es zu bearbeiten wäre:
@permission_required ('myApp.edit_project ')
und löschen:
@permission_required (' myApp.delete_project ')
Aber ich fand, dass der Schlüssel, was Ihre Auth-Tabellen korrekt eingerichtet sind, um sicherzustellen, ist. Das hat mir Probleme gemacht. Hier ist eine MySQL SQL-Abfrage, die ich geschrieben habe, um Berechtigungen zu prüfen, wenn Sie Gruppen verwenden. Dies sollte in den meisten dBs arbeiten:
select usr.id as 'user id',usr.username,grp.id as 'group id',grp.name as 'group name',grpu.id as 'auth_user_groups',grpp.id as 'auth_group_permissions',perm.name,perm.codename
from auth_user usr
left join auth_user_groups grpu on usr.id = grpu.user_id
left join auth_group grp on grpu.group_id = grp.id
left join auth_group_permissions grpp on grp.id = grpp.group_id
left join auth_permission perm on grpp.permission_id = perm.id
order by usr.id;
Ich fand, dass meine Rechte wurden nicht richtig eingerichtet, und auch für die django_content_type Tabelle achten, welche Zeilen für jede App und Tabelle für jede Add haben müssen, bearbeiten, löschen . Wenn Sie also eine Projekttabelle haben, sollten Sie dies in django_content_type sehen:
id [generated by dB]
app_label myApp
model project
Wenn Sie Probleme haben eine andere gute Idee, die django Admin-App zu aktivieren und zu verwenden ist. Dies wird Ihnen zeigen, wo Ihre Probleme liegen, und indem Sie einige Testberechtigungen, Benutzer und Gruppen einrichten, können Sie die oben besprochenen Tabellen untersuchen, um zu sehen, was wo eingefügt wird. Dadurch erhalten Sie eine gute Vorstellung davon, wie Autorisierungsberechtigungen funktionieren.
Ich schreibe das, um vielleicht jemanden zu retten, der ein paar Stunden damit verbringen muss herauszufinden, was ich getan habe!
Danke. Das funktioniert. Haben Sie ein Beispiel für die Verwendung von permission_required? Aus der Dokumentation http://docs.djangoproject.com/en/1.0/topics/auth/#the-permission-required-decorator und http://www.djangobook.com/en/2.0/chapter14/ dachte ich was ich hätte funktionieren sollen. – Mitch
Ah. Aha. Danke für das Durchhalten. – Mitch
Können Sie bitte erklären, was mit dem Parameter ** 'polls.can_vote' ** am Ende passiert? Was ist der Zweck und wo bezieht es sich? Ist es vielleicht der Name der Gruppe, der ein Mitglied angehören muss? –