今天我开始在 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 中声明逻辑同时保持 DRY?