Django DecimalField表单字段错误未显示在模板中



我有一个愚蠢的问题。我有一个允许有1位小数的十进制字段。我需要手动迭代模板中的表单字段并呈现它们。如果在模板中我将输入设置为类型="0";文本";并在模板中显示错误消息("确保不超过1个小数位。"(的形式中输入一个有两个小数位的数字。然而,当我将输入设置为type="0"时;数字";并且步骤=";0.1〃;,则该错误不显示在模板中。我可以将其设置为文本,但这意味着用户可以输入任何字符。我宁愿不这样做,并将其作为一种类型=";数字";以便他们只能输入数字。

如有任何帮助,我们将不胜感激。

最小代码:

# forms.py
class TimeForm(forms.Form):
time = forms.DecimalField(max_digits=3, decimal_places=1, label = 'Time')
# template
<form method="POST">
{% csrf_token %}
<div>
<input type="number" step="0.1" class="form-control {% if form.time.errors %} is-invalid {% endif %}" 
name="{{form.time.name}}" id="{{ form.time.id_for_label }}"
{% if form.time.value %} value="{{form.time.value}}" {% else %} placeholder="Total Time" {% endif %}>
{% if form.time.errors %}
{% for error in form.time.errors %}
<span class="invalid-feedback">{{error}}</span>
{% endfor %}
{% endif %}
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>

我解决了我的问题。我遇到了另一个类似的问题,我的表单没有按照我希望的方式呈现错误。我想给输入字段一个红色边框,并在它下面像引导程序一样显示错误。但我在输入字段中得到了一个弹出窗口。这是浏览器在做一些验证。解决方案是将novalidate属性添加到表单标记中。

<form novalidate method="POST">

最新更新