目前我正在試驗django表單嚮導。現在基本的設置工作,我可以爲顯示可變文本的每個步驟調用不同的模板。Django表單嚮導 - 每個步驟的自定義表單佈局
現在我想進一步爲每一步創建一個自定義表單佈局。 Django的文檔顯示了一種通用的方式來顯示錶單,並始終與垂直對齊。
在我的實驗,我有兩個步驟:
- 第1步:電子郵件地址和密碼(只有兩個領域需要垂直排列)
- 第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 %}
但是我這裏的問題是,我有兩個blocks
:form_if
和form_else
調用相同的形式佈局。因此,我對錶單佈局進行了雙重維護。
有沒有更好的方法來實現我想要實現的目標?
謝謝!
親切的問候
如果您在每一步中只顯示一個表單,那麼您只需要form_else。在這種情況下,您可以顯着簡化您的模板。你不能嗎? – sergzach