在 Django 模板中使用 form.as_ul 时控制表单错误显示。
Posted
技术标签:
【中文标题】在 Django 模板中使用 form.as_ul 时控制表单错误显示。【英文标题】:Control the form errors display while using form.as_ul in Django templates.在 Django 模板中使用 form.as_ul 时控制表单错误显示。 【发布时间】:2012-01-24 23:41:19 【问题描述】:我喜欢方便的输出表单方法 form.as_ul
,但有没有一种方法可以让我继续使用它,但预先捕获所有错误,而不是在每个字段上方显示错误。
我知道django docs 中提到的循环遍历每个表单元素等的方法,但我想继续利用form.as_ul()
的功能,除了控制错误显示。
【问题讨论】:
【参考方案1】:使用Reusable Form Templates解决了这个问题。
很简单……
根据您的需要,使用以下代码 sn-ps 创建可重复使用的模板。
如果您想在表单顶部显示所有错误...
% 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 %
使用第二个模板并创建了Inclusion Tag
【讨论】:
祝贺解决方案。如果有能力,请确保将您的答案标记为“已接受”,以便其他人可以从您的成功中学习。干杯~ 这是我希望你做的。 :-) 你忘了help_text
和non_field_errors
。
@DrTyrsa,您的评论肯定有助于达成上述解决方案。谢谢。【参考方案2】:
我看到的唯一方法是从forms.Form
继承新的表单类并根据需要更改as_ul
方法。如果您要使用第三方表单,例如登录表单等(他们不会有这种方法),这不是很好。
我认为最好的解决方案是创建自己的inclusion tag 并用它呈现表单。它将与as_ul
(% render_form form %
) 一样短,但非常灵活,它适用于所有表单,并且不会混合使用 HTML 和 Python 代码。
【讨论】:
【参考方案3】:我仍然认为在模板中呈现表单的自定义非常灵活。我通常为我的网络应用程序这样做。您可能会使用一些 javascript 和 css 但不是大问题。此外,我认为我们应该尝试让应用程序变得简单。
【讨论】:
以上是关于在 Django 模板中使用 form.as_ul 时控制表单错误显示。的主要内容,如果未能解决你的问题,请参考以下文章