【问题标题】:django accessing errorsdjango 访问错误
【发布时间】:2011-06-13 19:42:27
【问题描述】:

我有以下几点:

{% if formDetails.errors %}
{% for key, value in formDetails.errors.items %}
{% for error in value %}
    <div class="ui-widget" id="id-error">
        <div class="ui-state-error ui-corner-all" style="padding: 0 .7em;">
            <p><span class="ui-icon ui-icon-alert" style="float: left; margin-right: .3em;"></span>
            <strong>{{ key }}:</strong> {{ error }}</p>
        </div>
    </div>
{% endfor %}
{% endfor %}

但不幸的是,key 给了我模型字段的名称(带有下划线的小写字母)。如何获得像field.label_tag 这样好看的名字?

【问题讨论】:

    标签: django django-forms


    【解决方案1】:

    form.errors 模板变量是一个列表而不是字典,因此您应该按如下方式访问它:

    {% for error in form.errors %}
        <li>{{ error }}</li>
    {% endfor %}
    

    此外,它还包含由您正在处理的Form 对象上的clean() 方法引发的表单范围错误。各个字段引发的验证错误,可以这样访问:

    {% for field in form %}
        {% for error in field.errors %}
            {{ error }}
        {% endfor %}
        {{ field.label_tag }}
    {% endfor %}
    

    阅读this part of the Django docs,您似乎对访问表单时所拥有的内容没有完全了解。

    【讨论】:

    • 您的第二个示例运行良好。干杯!现在我在表单上方出现错误,您不知道如何阻止错误出现在各个字段上方?
    • 不幸的是,如果您想从上面的链接中删除字段上方的错误消息,则不能使用as_table :(
    • 每个字段的错误是特定于每个字段的。您可以使用提供的标签和 for 循环等来改变显示的位置,如我的回答和提供的文档中所述。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    • 2013-02-24
    • 2023-03-27
    • 2015-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多