django如何访问错误消息列表中的第一个错误

Posted

技术标签:

【中文标题】django如何访问错误消息列表中的第一个错误【英文标题】:django how to access first error in a list of error messages 【发布时间】:2013-09-30 10:18:52 【问题描述】:

假设我有一个名为 form 的表单,如果存在错误消息,我只想在屏幕上显示第一条错误消息。我做了一些研究,显然你可以通过在模板中输入来访问第一条错误消息。

 form.errors.0 

但它似乎对我不起作用,它不显示任何内容。如何制作我的模板,以便在出现表单错误时只显示第一条错误消息?这是我尝试过的。

<html>
    <body>

    <form method="post" action="">% csrf_token %
         form 
    <input type="submit" value="Register"/>
    </form>

    % if form.errors %
             form.errors.0 
        % endif %
    </body>
</html>

所以,我想要的是,我只想在 form.errors 中显示第一个错误。 请注意,当我更改时

 form.errors.0 

 form.errors 

它确实显示了所有错误,但是,我只想显示一个错误,只是第一个错误消息。那么,知道为什么我的点符号不起作用吗?

【问题讨论】:

【参考方案1】:

form.errors 不是字典,至少根据 *** 中的其他相关问题:

django accessing errors

django: how to access only first error message in form.errors?

如果你真的只需要得到第一个错误(记住所有字段错误会一起出现),你可以尝试转换为值然后得到第一个项目,比如:

form.errors.values.0

form.errors.items.0

这一秒将返回一个带有标签和错误消息的元组。

【讨论】:

好的太好了.. 所以 form.errors 显示该字段,然后显示错误消息。例如,如果用户未填写用户名字段,则会显示“用户名 - 此字段为必填项”。但是当我执行 form.errors.items.0 时,它只会显示错误消息。有没有办法显示字段名称?我知道元组返回错误消息但元组看起来不太好,它看起来像“('用户名',[u'这个字段是必需的。'])”有什么办法可以改变它的外观吗?另外,我可以对您从哪里学习 form.errors.values.0 表示赞吗? 哦,好吧,我所做的是 % if form.errors % % for errors in form.errors % % if forloop.counter == 1 % errors % endif % % endfor % form.errors.values.0 % endif %.. 这样,它会显示“用户名 - 此字段是必需的”.. 但是,是的,非常感谢!如果你能给我一个链接到你从哪里学习 form.errors.values.0 和 form.errors.items.0 也很好:) 我都试过了,因为这是一个扩展的字典:github.com/django/django/blob/master/django/forms/utils.py#L41 当你不带方法调用时,它会在这个“as_ul”中打开,看看 str 方法跨度> 啊,好吧,所以我可以改变那个 str 方法,对吧?好的完美,谢谢!另外,您说“当您没有方法调用时”.. 没有方法调用什么? form.errors 你默认调用 str 方法,form.errors.0 也是。但是 form.errors.copy,例如,您调用 dict 副本,然后调用 ErrorDict 类中的方法。

以上是关于django如何访问错误消息列表中的第一个错误的主要内容,如果未能解决你的问题,请参考以下文章

访问 Django 模板中的第一条消息

视图中的Django外键 - 获取列表中每个用户显示的第一个图像

ListView 仅显示数组列表中的第一项

数据库 PostgreSQL 中的访问错误

Django 和 AngularJS:如何显示来自 Django 调试错误消息的 Angular $http 错误

循环中的 Django 计数器以索引列表