bro*_*000 12 python django django-forms
我想在模板中使用{{form.errors}}列出所有表单错误.这将生成一个表单字段列表和每个字段的错误的嵌套列表.但是,使用该字段的文字名称.在特定字段中生成的带有错误的html可能如下所示.
<ul class="errorlist">
<li>
target_date_mdcy
<ul class="errorlist">
<li>This field is required.</li>
</ul>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
我想使用错误列表功能,因为它很简单.但是,我想使用标签(比如说"目标日期")而不是字段名称.实际上,我想不出你希望为网页用户显示字段名称的情况.有没有办法使用带有字段标签的渲染错误列表?
我没有看到一个简单的方法来做到这一点.
表单的errors属性实际上返回一个ErrorDict定义的类django.forms.utils- 它是一个dict知道的子类,它将自身的ul呈现作为其unicode表示.但键实际上是字段名称,这对于维护其他行为很重要.因此它无法轻松访问字段标签.
您可以定义一个自定义模板标记,它接受表单以生成您喜欢的呈现,因为在Python代码中,很容易获得给定表单和字段名称的字段标签.或者,您可以在视图中按标签构造错误列表,将其添加到您的上下文中,然后使用它.
再次编辑,您可以迭代字段并检查其各自的错误,记住也要显示non_field_errors.就像是:
<ul class="errorlist">
{% if form.non_field_errors %}
<li>{{ form.non_field_errors }}</li>
{% endif %}
{% for field in form %}
{% if field.errors %}
<li>
{{ field.label }}
<ul class="errorlist">
{% for error in field.errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
</li>
{% endif %}
{% endfor %}
</ul>
Run Code Online (Sandbox Code Playgroud)
您可能希望将non_field_errors包装在列表中,具体取决于.
我知道这已经得到了解答,但我遇到了同样的情况,发现有一种简单的方法可以使用标签:
{% if form.errors %}
<ul class="user-msg error">
{% for field in form %}
{% for error in field.errors %}
<li>
{% if field != '__all__' %}
<strong>{{ field.label }}:</strong>
{% endif %}
{{ error }}
</li>
{% endfor %}
{% endfor %}
</ul>
{% endif %}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6055 次 |
| 最近记录: |