2017-05-11 11 views
1

このクラスの担当者にuser_passes_testを使用したいと思います。これを作成ビューに適用する方法はありますか。djangoのCreateViewクラスのuser_passes_test

@user_passes_test(ラムダU:u.groups.filter(名= 'HOD'))(存在する。)

あなたが任意の関数を使用することができます

views.py

class RetestCreate(CreateView): 
    model = Retest 
    fields = ['semester', 'dept', 'batch', 'date', 'subject', 'name', 'admnno', 'reason', 'proof', 'is_sure'] 

答えて

1

メソッドのデコレータをmethod_decoratorで表示します。 user_passes_test.dispatch方法、それはすべてのリクエストメソッドのために働くだろう、このように使用することができます:Djangoの1.9以来

from django.utils.decorators import method_decorator 
from django.contrib.auth.decorators import user_passes_test 

class RetestCreate(CreateView): 
    @method_decorator(user_passes_test(lambda u: u.is_superuser)) 
    def dispatch(self, *args, **kwargs): 
     return super().dispatch(*args, **kwargs) 
+1

、method_decoratorは、クラスを飾るとキーワード引数名​​として飾られるメソッドの名前を渡すために使用することができ:@method_decorator(user_passes_test(lambda u:u.is_superuser)、name = 'ディスパッチ') – kmmbvnr

関連する問題