Guardianのpermission_requiredで装飾しようとしているCB DeleteViewがあります。アクセス許可は、ログインしているユーザーと、DeleteView のオブジェクトに対するものである必要があります。ガーディアンのドキュメントはこれについてあまり明確ではないので、誰かが明確にできるかどうか疑問に思っています.
質問する
2764 次
2 に答える
5
私はほぼ同じ問題に遭遇しましたが、これが私の解決策です(あなたのケースに適応しています):
ビュー.py
class MyModelDeleteView(DeleteView):
model=MyModel
@method_decorator(permission_required_or_403('myapp.delete_mymodel',
(MyModel, 'slug', 'slug'), accept_global_perms=True))
def dispatch(self, *args, **kwargs):
return super(MyModelDeleteView, self).dispatch(*args, **kwargs)
デフォルトではFalseであるaccept_global_permsパラメータを渡すことができることに注意してください。「myapp.delete_mymodel」権限を持つユーザーは、 MyModelクラスの任意のオブジェクトを削除できます。これは、モデレーターなどに役立ちます。
于 2012-06-27T16:36:11.757 に答える
0
クラスベースのビューのすべてのインスタンスを装飾するには、クラス定義自体を装飾する必要があります。これを行うには、デコレータをクラスの dispatch() メソッドに適用します。たとえば、
class ExampleView(TemplateView):
template_name = 'Example.html'
@method_decorator(login_required)
def dispatch(self, *args, **kwargs):
return super(ExampleView, self).dispatch(*args, **kwargs)
于 2012-06-07T04:00:16.970 に答える