0

今日、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 でロジックを宣言するのを防ぐ正しい方法はありますか?

4

2 に答える 2

4

少しきれいなバージョンは次のようになります。

ビュー.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')
于 2012-12-02T12:37:11.953 に答える
0

WizardWievはまだ使用していませんが、URL定義を介して渡すのではなく、WizardViewサブクラス自体にこれらの属性を設定してみましたか?または、それを提出して、WizardView.get_formメソッドをオーバーロードしてみましたか?

于 2012-12-03T11:56:55.900 に答える