1

我喜欢方便的输出表单方法{{ form.as_ul }},但有没有一种方法我仍然可以继续使用它,但预先捕获所有错误,而不是在每个字段上方显示错误。

我知道有一些方法可以遍历每个表单元素等,如django 文档中所述,但我想继续利用form.as_ul()除控制错误显示之外的功能。

4

3 回答 3

3

通过使用可重复使用的表单模板解决了这个问题。

这很简单...

  1. 根据您的需要,使用以下代码片段创建可重用模板。

  2. 如果您想在表单顶部显示所有错误...

    {% 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 %}
    
  3. 如果您想在每个表单字段之后立即显示所有错误,而没有围绕错误使用的默认 html 元素...

    {% for field in form %}
        {{ field.label_tag }}: {{ field }}
        {% for error in field.errors %}{{ error }}{% endfor %}
    {% endfor %}
    
  4. 使用第二个模板并创建了一个包含标签

于 2011-12-22T03:50:49.777 回答
1

我看到的唯一方法是继承新的表单类forms.Form并根据需要更改as_ul方法。如果您要使用第三方表单,如登录表单等(他们不会有这种方法),这不是很好。

我认为最好的解决方案是创建自己的包含标签并使用它呈现表单。它将与as_ul( {% render_form form %}) 一样短,但非常灵活,它适用于所有表单,并且不会混合 HTML 和 Python 代码。

于 2011-12-21T07:16:53.390 回答
0

我仍然认为在模板中呈现表单的自定义非常灵活。我通常为我的网络应用程序这样做。您可能会使用一些 javascript 和 css,但问题不大。此外,我认为我们应该尝试让应用程序变得简单。

于 2011-12-21T11:30:16.637 回答