我喜欢方便的输出表单方法{{ form.as_ul }}
,但有没有一种方法我仍然可以继续使用它,但预先捕获所有错误,而不是在每个字段上方显示错误。
我知道有一些方法可以遍历每个表单元素等,如django 文档中所述,但我想继续利用form.as_ul()
除控制错误显示之外的功能。
我喜欢方便的输出表单方法{{ form.as_ul }}
,但有没有一种方法我仍然可以继续使用它,但预先捕获所有错误,而不是在每个字段上方显示错误。
我知道有一些方法可以遍历每个表单元素等,如django 文档中所述,但我想继续利用form.as_ul()
除控制错误显示之外的功能。
通过使用可重复使用的表单模板解决了这个问题。
这很简单...
根据您的需要,使用以下代码片段创建可重用模板。
如果您想在表单顶部显示所有错误...
{% if form %}
{% if form.errors %}
{% for field in form %}
{{field.errors}}
{% endfor %}
{% endif %}
{% for field in form %}
<li>{{ field.label_tag }}: {{ field }}</li>
{% endfor %}
{% endif %}
如果您想在每个表单字段之后立即显示所有错误,而没有围绕错误使用的默认 html 元素...
{% for field in form %}
{{ field.label_tag }}: {{ field }}
{% for error in field.errors %}{{ error }}{% endfor %}
{% endfor %}
使用第二个模板并创建了一个包含标签
我看到的唯一方法是继承新的表单类forms.Form
并根据需要更改as_ul
方法。如果您要使用第三方表单,如登录表单等(他们不会有这种方法),这不是很好。
我认为最好的解决方案是创建自己的包含标签并使用它呈现表单。它将与as_ul
( {% render_form form %}
) 一样短,但非常灵活,它适用于所有表单,并且不会混合 HTML 和 Python 代码。
我仍然认为在模板中呈现表单的自定义非常灵活。我通常为我的网络应用程序这样做。您可能会使用一些 javascript 和 css,但问题不大。此外,我认为我们应该尝试让应用程序变得简单。