程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

使用标签而不是字段名称渲染表单错误

发布于2019-09-09 18:52     阅读(1233)     评论(0)     点赞(6)     收藏(0)


我想在模板中使用{{form.errors}}列出所有表单错误。这将生成一个表单字段列表和每个字段的错误的嵌套列表。但是,使用该字段的文字名称。在特定字段中生成的带有错误的html可能如下所示。

<ul class="errorlist">
    <li>
        target_date_mdcy
        <ul class="errorlist">
            <li>This field is required.</li>
        </ul>
    </li>
</ul>

我想使用错误列表功能,因为它很简单。但是,我想使用标签(比如说“目标日期”)而不是字段名称。实际上,我想不出你希望为网页用户显示字段名称的情况。有没有办法使用带有字段标签的渲染错误列表?


解决方案


我没有看到一个简单的方法来做到这一点。

表单的errors属性实际上返回一个ErrorDict定义的类django.forms.utils- 它是一个dict知道的子类,它将自身的ul呈现作为其unicode表示。但键实际上是字段名称,这对于维护其他行为很重要。因此它无法轻松访问字段标签。

您可以定义一个自定义模板标记,它接受表单以生成您喜欢的呈现,因为在Python代码中,很容易获得给定表单和字段名称的字段标签。或者,您可以在视图中按标签构造错误列表,将其添加到您的上下文中,然后使用它。

再次编辑,您可以迭代字段并检查其各自的错误,记住也要显示non_field_errors就像是:

<ul class="errorlist">
  {% if form.non_field_errors %}
    <li>{{ form.non_field_errors }}</li>
  {% endif %}
  {% for field in form %}
    {% if field.errors %}
      <li>
        {{ field.label }}
        <ul class="errorlist">
          {% for error in field.errors %}
            <li>{{ error }}</li>
          {% endfor %}
        </ul>
      </li>
    {% endif %}
  {% endfor %}
</ul>

您可能希望将non_field_errors包装在列表中,具体取决于。



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/105017/831806e6a241986e01eb/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

6 0
收藏该文
已收藏

评论内容:(最多支持255个字符)