【发布时间】:2023-01-10 08:35:50
【问题描述】:
我有一个愚蠢的问题。我有一个允许保留 1 位小数的小数字段。我需要手动遍历模板中的表单字段并呈现它们。如果在模板中我将输入设置为 type="text" 并在表单中输入带两位小数的数字,则会在模板中显示错误消息(“确保小数点后不超过 1 位。”)。但是,当我将输入设置为 type="number" 和 step="0.1" 时,错误不会显示在模板中。我可以将其设置为文本,但这意味着用户可以输入任何字符。我不想这样做,而是将其设置为 type="number",这样他们只能输入数字。
任何帮助,将不胜感激。
最小代码:
# 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>
【问题讨论】:
标签: django django-forms django-templates