これは私の「プロジェクトの上で私の作品テーブル/モデル:
@permission_required('myApp.add_project')
def create(request):
# python code etc...
明らかにADD_にadd_projectを変更[モデル/表があるものは何でも]。編集するには:
@permission_required( 'myApp。edit_project「)
および削除する:
@permission_required(」myApp.delete_project ')
しかし、私は重要なことは、あなたの認証テーブルが正しく設定されていることを確認することであることがわかりました。これが私の問題を引き起こした原因です。あなたがグループを使用している場合に、権限をチェックするために書いたMySQL SQLクエリです。これは、ほとんどのdBで動作するはずです:
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;
私は私の権限が正しく設定されていなかったことが判明し、また追加のそれぞれについて、それぞれのアプリとテーブルの行を持っている必要がありますたdjango_content_typeテーブルに気をつけ、編集、削除します。あなたは、プロジェクトのテーブルを持っているのであれば、あなたがたdjango_content_typeでこれが表示されます。
id [generated by dB]
app_label myApp
model project
あなたは別の良いアイデア問題がある場合Djangoの管理アプリを有効にして使用することです。これはあなたの問題がどこにあるかを示し、いくつかのテスト権限、ユーザ、グループを設定することで、上で説明したテーブルを調べて、どこに何が挿入されているかを調べることができます。これにより、認証許可の仕組みがわかります。
私はこれを書いて、多分、私が何をしたかを考え出すのに2,3時間を費やす必要がなくなりました!
ありがとうございました。それはうまくいく。 permission_requiredの使用方法の例がありますか?ドキュメントhttp://docs.djangoproject.com/en/1.0/topics/auth/#the-permission-required-decoratorとhttp://www.djangobook.com/en/2.0/chapter14/から私は何を考えましたか?仕事があったはずだった。 – Mitch
ああ。そうですか。忍耐してくれてありがとう。 – Mitch
最後に** 'polls.can_vote' **パラメータについて何が起こっているのか説明してください。それの目的は何ですか?それはどこを指していますか?それはおそらくグループの名前ですか、メンバーでなければなりませんか? –