我想知道是否有方法使用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