今天我开始在django 1.4中使用表单向导。功能似乎很好,但根据文档,需要将form_list
(和condition_dict
,必要时)传递给as_view
方法(这意味着urls.py
而不是在WizardView
这意味着在urls.py
而不是views.py
内编写一些逻辑,我认为这是针对django模式的,因为视图模块应该负责视图逻辑。
我最终得到了以下内容:
# views.py
class MyWizard(SessionWizardView):
_form_list = (
('init', forms.MyWizardFormInit),
('newuser', forms.MyWizardFormNewUser),
)
_condition_dict = {
'newuser': lambda wizard: (wizard.get_cleaned_data_for_step('init') or {}).get('existing_user') == 'False'
}
和urls.py
:
url(.., MyWizard.as_view(MyWizard._form_list, condition_dict = MyWizard._condition_dict)),
真的看起来很蠢和荒谬。 有没有正确的方法阻止在urls.py 中声明逻辑,而保持干燥?
答案 0 :(得分:3)
稍微清洁的版本可能如下所示:
<强> views.py 强>
my_wizard_view = MyWizard.as_view(MyWizard._form_list, condition_dict=MyWizard._condition_dict))
<强> urls.py 强>
url(r'^my_wizard/$', my_wizard_view, name='my_wizard')
答案 1 :(得分:0)
我还没有使用过WizardWiev,但您是否尝试在WizardView子类本身上设置这些属性,而不是通过url定义传递它们?或者,提交一下,您是否尝试重载WizardView.get_form
方法?