在 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_textnon_field_errors @DrTyrsa,您的评论肯定有助于达成上述解决方案。谢谢。【参考方案2】:

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

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

【讨论】:

【参考方案3】:

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

【讨论】:

以上是关于在 Django 模板中使用 form.as_ul 时控制表单错误显示。的主要内容,如果未能解决你的问题,请参考以下文章

Django 在模板标签中使用变量

通过Django模板检测模板中使用的语言[关闭]

如何在 Django 模板中嵌套或联合使用两个模板标签?

如何在 Django 模板中使用变量索引访问列表?

如何在 % % 之间的 Django 模板中使用变量

如何使用 django 在模板中显示默认值?