Cela fonctionne pour moi sur mon « projet » table/modèle:
@permission_required('myApp.add_project')
def create(request):
# python code etc...
De toute évidence, changez le add_project en add_ [quel que soit votre modèle/table]. Pour l'éditer serait:
@permission_required ('myApp.edit_project ')
et supprimer:
@permission_required (' myApp.delete_project ')
Mais je trouve que la chose clé est de vous assurer que vos tables auth sont correctement configurés. C'est ce qui m'a causé des problèmes. Voici une requête SQL MySQL que j'ai écrite pour vérifier les permissions si vous utilisez des groupes. Cela devrait fonctionner dans la plupart des dBs:
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;
J'ai trouvé que mes autorisations ne sont pas mis en place correctement, et regardez également pour la table django_content_type qui doit avoir des lignes pour chaque application et table pour chacun ajouter, modifier, supprimer . Donc, si vous avez une table de projet, vous devriez voir ceci dans django_content_type:
id [generated by dB]
app_label myApp
model project
Si vous rencontrez des problèmes Une autre bonne idée est de permettre et d'utiliser l'application admin django. Cela vous montrera où vos problèmes sont, et en mettant en place des autorisations de test, les utilisateurs et les groupes, vous pouvez ensuite examiner les tables discutées ci-dessus pour voir ce qui est inséré où. Cela vous donnera une bonne idée du fonctionnement des autorisations auth. J'écris ceci pour peut-être sauver quelqu'un de devoir passer quelques heures à déterminer ce que j'ai fait!
Merci. Cela fonctionne. Avez-vous un exemple d'utilisation de permission_required? De la documentation http://docs.djangoproject.com/fr/1.0/topics/auth/#the-permission-required-decorator et http://www.djangobook.com/fr/2.0/chapter14/ Je pensais ce que je a dû travailler. – Mitch
Ah. Je vois. Merci d'avoir persévéré. – Mitch
Pourriez-vous expliquer ce qui se passe avec le paramètre ** 'polls.can_vote' ** à la fin? Quel est le but et à quoi cela fait-il référence? Est-ce peut-être le nom du groupe, le doit être un membre de? –