我有一个带有电子邮件属性的表单。
当使用{{ form.email }}某些验证错误时,Django仍会在输入标签的value属性中呈现先前的值:
{{ form.email }}
<input type="text" id="id_email" maxlength="75" class="required" value="some@email.com" name="email">
我想自己渲染输入标签(在发生错误的情况下添加一些JavaScript代码和错误类)。例如,这是我的模板,而不是{{ form.email }}:
<input type="text" autocomplete="on" id="id_email" name="email" class="email {% if form.email.errors %} error {% endif %}">
但是,这不会some@email.com向用户显示错误的值(在此示例中)。
some@email.com
如何在模板中获取字段的值?
这是一项功能请求,已在Django 1.3中修复。
错误是这样的:https://code.djangoproject.com/ticket/10427
基本上,如果要在1.3之后运行,可以在Django模板中执行以下操作:
{{ form.field.value|default_if_none:"" }}
或在Jinja2中:
{{ form.field.value()|default("") }}
注意,这field.value()是一个方法,但是在Django模板()中省略了,而在Jinja2中,方法调用是显式的。
field.value()
()
如果你想知道你正在运行的Django版本,它将在执行runserver命令时告诉你。 如果你使用的是1.3之前的版本,则可以使用上述错误中发布的修复程序:https : //code.djangoproject.com/ticket/10427#comment:24