一尘不染

如何在模板中显示Django表单字段的值?

django

我有一个带有电子邮件属性的表单。

当使用{{ form.email }}某些验证错误时,Django仍会在输入标签的value属性中呈现先前的值:

<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向用户显示错误的值(在此示例中)。

如何在模板中获取字段的值?


阅读 645

收藏
2020-03-28

共1个答案

一尘不染

这是一项功能请求,已在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中,方法调用是显式的。

如果你想知道你正在运行的Django版本,它将在执行runserver命令时告诉你。
如果你使用的是1.3之前的版本,则可以使用上述错误中发布的修复程序:https : //code.djangoproject.com/ticket/10427#comment:24

2020-03-28