2013-11-26 84 views
0

我想知道是否有方法使用Django的FormWizard權限裝飾器。我知道有一種方法可以通過urlconf來完成,但我想避免這種情況,並通過視圖設置我的權限。Django FormWizard和權限

我試圖覆蓋MyFormWizard.as_view()並在那裏添加裝飾器,但後來意識到as_view()是@classonly方法。

我沒有很多基於類的視圖的經驗,並想知道是否有一種簡單的方法在FormWizard的方法之一上添加權限裝飾器?任何線索?

回答

1

您不必在url conf中修飾視圖。您可以在views.py這樣做,

protected_wizard_view = login_required(MyWizardView.as_view()) 

,然後在urls.py導入protected_wizard_view

(r'^wizard/', protected_wizard_view), 

另一個另一種選擇是裝飾dispatch方法,如described in the docs

class MyWizardView(WizardView): 

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

感謝,調度()和@method_decorator的正是我一直在尋找! – mzu

0

@Alasdair反應良好,也有包含許多助手和混入,你可以使用基於類的查看,看看here一個偉大的應用程序。

運行pip install django-braces,你可以使用LoginRequiredMixin

from braces.views import LoginRequiredMixin 

class MyWizardView(LoginRequiredMixin, WizardView): 
    pass 

還有混入像PermissionRequiredMixinMultiplePermissionsRequiredMixinGroupRequiredMixin ...