Django 手动渲染多值字段的子字段
在我的Django 1.7应用程序中,我试图利用MultiValueField类实现一个password/confirm password表单元素,即两个单独的密码字段,要求用户输入并确认新密码。我已经用两个单独的字段和表单上的Django 手动渲染多值字段的子字段,django,python-3.x,django-forms,django-templates,Django,Python 3.x,Django Forms,Django Templates,在我的Django 1.7应用程序中,我试图利用MultiValueField类实现一个password/confirm password表单元素,即两个单独的密码字段,要求用户输入并确认新密码。我已经用两个单独的字段和表单上的clean()方法实现了这一点,但“单”多值字段似乎是维护DRY原则的更好方法,特别是因为我不仅需要在用户注册表单中复制,而且还需要在用户想要更改密码时复制 然而,我的前端非常具体,一点也不像Django的默认表单输出,所以我很抱歉。这非常有效——直到我进入多值字段。对于
clean()
方法实现了这一点,但“单”多值字段似乎是维护DRY原则的更好方法,特别是因为我不仅需要在用户注册表单中复制,而且还需要在用户想要更改密码时复制
然而,我的前端非常具体,一点也不像Django的默认表单输出,所以我很抱歉。这非常有效——直到我进入多值字段。对于每个表单字段,我的HTML如下所示:
<div class="row collapse">
<div class="small-2 columns">
<span class="prefix"><i class="fi-mail"></i></span>
</div>
<div class="small-10 columns {% if form.email.errors %}error{% endif %}">
{{ form.email }}
{% if form.email.errors %}<small class="error">{{ form.email.errors }}</small>{% endif %}
</div>
</div>
{{form.email}
{%if-form.email.errors%}{{form.email.errors}}{%endif%}
我需要为form.password
的每个子字段执行类似的格式设置,但我尝试过的任何操作都没有为我提供渲染的子字段;最近的一个例子是我的模板中的{{form.fields.password.fields.0}
,它给了我类似
的输出,但是这显然不是一个呈现的表单字段
是否有一些简单而明显的东西我遗漏了,或者我试图在Django做的是不可能的?中的代码适合您的问题,正如farthVader所建议的那样。我有一个类似的问题,我最终以这种方式解决了它:
<input type="text" id="{{ form.password.html_name }}_0" name="{{ form.password.html_name }}_0" value="{{ form.password.value.0|default_if_none:'' }}"/>
<input type="text" id="{{ form.password.html_name }}_1" name="{{ form.password.html_name }}_1" value="{{ form.password.value.1|default_if_none:'' }}"/>
在用多值字段和多窗口小部件明确划分验证逻辑一个小时后,我被困在这里。你能克服这个问题吗?我将不胜感激!:)这个解决方案对我有效。