目前我正在尝试使用 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
调用相同的表单布局。因此,我对表单布局进行了双重维护。
有没有更好的方法来实现我想要实现的目标?
谢谢!
亲切的问候