2012-06-07 21 views
6

私はGuardianのpermission_requiredで装飾しようとしているCB DeleteViewを持っています。アクセス権は、ログインしているユーザーおよびDeleteViewのオブジェクトに対するものでなければなりません。ガーディアンのドキュメントはこれについてあまり明確ではないので、誰かが明確にできるかどうか疑問に思っています。Django Guardian - クラスベースのビューでpermission_requiredデコレータを使用するにはどうすればよいですか?

+0

あなたの質問はこれに似ています。チェックアウトしてください。 http://stackoverflow.com/questions/6069070/how-to-use-permission-required-decorators-on-django-class-based-views –

答えて

0

クラスベースビューのすべてのインスタンスをデコレートするには、クラス定義自体をデコレートする必要があります。これを行うには、私の解決策(あなたのケースに適用される)

class ExampleView(TemplateView): 
    template_name = 'Example.html' 

    @method_decorator(login_required) 
    def dispatch(self, *args, **kwargs): 
     return super(ExampleView, self).dispatch(*args, **kwargs) 
+0

私はこれを認識しています。しかし、私は特に、CBVのGuardianパーミッションデコレータにユーザとモデルオブジェクトを含める方法を尋ねています。ありがとう! –

4

は、私はここで、ほぼ同じ問題が発生したため、class.ForのXAMPLEの発送()メソッドにデコレータを適用します。

ビューをあなたはaccept_global_permsパラメータを渡すことができるの.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 です。 'myapp.delete_mymodel'のユーザーは、MyModelというオブジェクトを削除できます。これは、たとえばモデレーターにとって便利です。

Guardian Decorators documentation

関連する問題