現在、私はdjangoフォームウィザードを試しています。これで基本的な設定が機能し、可変テキストを表示するステップごとに異なるテンプレートを呼び出すことができます。
次に、さらに一歩進んで、ステップごとにカスタマイズされたフォームレイアウトを作成します。Djangoのドキュメントには、常に垂直方向に配置されたフォームを表示する一般的な方法が示されています。
私の実験では、2つのステップがあります。
- ステップ1:電子メールとパスワード(垂直方向の配置が必要な2つのフィールドのみ)
- ステップ2:個人データ:住所、職業、..。
したがって、ステップ2では、完全に異なるフォームレイアウトを使用し、次にステップ1:フィールドセットを使用して、フィールドの水平方向の配置(住所:番地と番号など)、...
djangoのドキュメントから始めて、以下が機能すると思います(まだテストしていません):
{% block content %}
# block step: variable text for each step
{% block step %}{% endblock %}
<p>Step {{ wizard.steps.step1 }} of {{ wizard.steps.count }}</p>
<form action="" method="post">{% csrf_token %}
<table>
{{ wizard.management_form }}
{% if wizard.form.forms %}
{{ wizard.form.management_form }}
{% for form in wizard.form.forms %}
# block form_if: shows a complete customized form layout for each step
{% block form_if %}{% endblock %}
{% endfor %}
{% else %}
# block form_else: shows a complete customized form layout for each step
{% block form_else %}{% endblock %}
{% endif %}
</table>
{% if wizard.steps.prev %}
<button name="wizard_goto_step" type="submit" value="{{ wizard.steps.first }}">{% trans "first step" %}</button>
<button name="wizard_goto_step" type="submit" value="{{ wizard.steps.prev }}">{% trans "prev step" %}</button>
{% endif %}
<input type="submit" value="{% trans "submit" %}"/>
</form>
{% endblock %}
しかし、ここで私が抱えている問題は、2つあることですblocks
:form_if
そしてform_else
同じフォームレイアウトを呼び出しています。そのため、フォームレイアウトを二重にメンテナンスします。
私が達成したいことを達成するためのより良い方法はありますか?
ありがとう!
敬具