我想在模板中使用{{form.errors}列出所有表单错误。这将生成表单字段列表和每个字段的错误嵌套列表。但是,使用字段的文字名称。生成的在特定字段中有错误的html可能如下所示。
<ul class="errorlist">
<li>
target_date_mdcy
<ul class="errorlist">
<li>This field is required.</li>
</ul>
</li>
</ul>
我想使用错误列表功能,因为它很好和容易。但是,我想使用标签(“目标日期”,比方说)而不是字段名。实际上,我想不出一个例子,在这种情况下,你会希望显示一个网页的用户的域名。是否有方法将呈现的错误列表与字段标签一起使用?
我在一个自定义表单类中解决了这个问题,我的所有表单都继承了这个类,而不是
django.forms.Form
。在这里,我改变了form.errors
的工作方式,返回一个自定义的ErrorDict
,其as_ul
方法考虑了标签。因此,您不需要更改模板,但需要让表单继承CustomBaseForm
。我知道这已经得到了回答,但是,我在相同的场景中运行,发现有一种简单的方法可以使用标签:
我看不出一个简单的方法。
表单的errors属性实际上返回一个
ErrorDict
,一个在django.forms.utils
中定义的类-它是dict
的一个子类,知道如何将自己的ul呈现为其unicode表示。但键实际上是字段名,这对于其他行为的维护很重要。因此,它无法轻松访问字段标签。您可以定义一个接受表单的自定义模板标记来生成您喜欢的呈现,因为在Python代码中,很容易获得给定表单和字段名的字段标签。或者可以在视图中按标签构造一个错误列表,将其添加到上下文中,然后改用它。
编辑 另外,您还可以遍历字段并检查它们各自的错误,同时记住显示
non_field_errors
。类似于:您可能还需要将非字段错误包装到列表中,具体取决于。
相关问题 更多 >
编程相关推荐