6

Guardianのpermission_requiredで装飾しようとしているCB DeleteViewがあります。アクセス許可は、ログインしているユーザーと、DeleteView のオブジェクトに対するものである必要があります。ガーディアンのドキュメントはこれについてあまり明確ではないので、誰かが明確にできるかどうか疑問に思っています.

4

2 に答える 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 に答える