今日、django 1.4 で Form Wizard を使い始めました。機能は良さそうですが、ドキュメントによると、form_list
(およびcondition_dict
、必要に応じて) をas_view
メソッドに渡す必要があります (つまりurls.py
、 のサブクラスで提供するのではなく)。WizardView
これは、ビューモジュールがビューロジックを担当することになっているため、djangoパターンに反すると思われるいくつかのロジックを内部urls.py
に書くことを意味します。views.py
私は次のようになりました:
# 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)),
本当にばかげてばかげているように見えます。DRY を維持しながらurls.py でロジックを宣言するのを防ぐ正しい方法はありますか?