我想知道是否有方法使用Django的FormWizard權限裝飾器。我知道有一種方法可以通過urlconf來完成,但我想避免這種情況,並通過視圖設置我的權限。Django FormWizard和權限
我試圖覆蓋MyFormWizard.as_view()並在那裏添加裝飾器,但後來意識到as_view()是@classonly方法。
我沒有很多基於類的視圖的經驗,並想知道是否有一種簡單的方法在FormWizard的方法之一上添加權限裝飾器?任何線索?
我想知道是否有方法使用Django的FormWizard權限裝飾器。我知道有一種方法可以通過urlconf來完成,但我想避免這種情況,並通過視圖設置我的權限。Django FormWizard和權限
我試圖覆蓋MyFormWizard.as_view()並在那裏添加裝飾器,但後來意識到as_view()是@classonly方法。
我沒有很多基於類的視圖的經驗,並想知道是否有一種簡單的方法在FormWizard的方法之一上添加權限裝飾器?任何線索?
您不必在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)
@Alasdair反應良好,也有包含許多助手和混入,你可以使用基於類的查看,看看here一個偉大的應用程序。
運行pip install django-braces
,你可以使用LoginRequiredMixin
from braces.views import LoginRequiredMixin
class MyWizardView(LoginRequiredMixin, WizardView):
pass
還有混入像PermissionRequiredMixin
,MultiplePermissionsRequiredMixin
,GroupRequiredMixin
...
感謝,調度()和@method_decorator的正是我一直在尋找! – mzu