私は複数のビューをすべてベースビューから継承しています。すべてのビューにはlogin_requiredデコレータが必要です。これをメソッドデコレータとして追加して、ベースビューを送出し、すべての子ビューにデコレータを追加する必要はありません。私はこれを達成できませんでした。クラスベースビューのディスパッチ時にlogin_requiredデコレータの継承
これは一般的に不可能ですか?私は何が欠けていますか?私は何を知っていないのですか?
class CoreView(CoreMixin,TemplateView):
pass
class BaseView(CoreView):
@method_decorator(login_required)
def dispatch(self, request, *args, **kwargs):
return super(BaseView, self).dispatch(request, *args, **kwargs)
class MyView(BaseView):
def dispatch(self, request, *args, **kwargs):
"Do Stuff"
私は私の研究を行うことを試みたが、答えを見つけることができませんでした。ここで
は、私のコードの多少壊れたバージョンです。
私は現在django 1.8とpython 2.7を使用しています。
重複デコレータの数を最小限に抑えるソリューションを見つけることを望んでいました。私はまだすべての子ビューにデコレータを追加するので、これはそれを解決していないようです。 – jimfawkes
'@ login_required'は要求を最初の引数として期待しますが、これはクラスの_every_ callableメンバにデコレータを追加します。これにより、最初の引数として要求を受け取っていない他の呼び出し可能な呼び出しに対してエラーが必ず発生します。 – knbk