【问题标题】:Django label_tag required asteriskDjango label_tag 需要星号
【发布时间】:2016-05-23 11:32:02
【问题描述】:

我目前正在处理一些 Django 模板,并希望在必填字段的标签后加上一个星号。

首先,我发现这种语法工作得很好,但它让我输入了很多不需要星号的代码。

<div>
    {{ field.errors }}
    <label for="{{ field.auto_id }}">
        {% if field.field.required %}<span class="required">{{ field.label }}</span>
        {% else %}{{ field.label }}{% endif %}
    </label>
    {{ field }}
</div>

这是我目前在我的模板中的代码:

<div>
    {{ field.errors }}
    {{ field.label_tag }}{{ field }}
</div>

这样可以节省很多代码编写,但我不知道如何在带有必填字段的标签后面获取星号。

有人可以帮我解决这个问题吗? 如果您需要更多信息,请随时询问。

【问题讨论】:

  • 您是否考虑过使用Crispy Forms 来呈现您的表单?默认情况下,它会将询问的星号添加到所有必填字段。 See screenshot。它还以红色概述了必填字段。
  • 事实上。去年我经常使用 Crispy Forms。

标签: python django


【解决方案1】:

您是否尝试在表单上设置required_css_class = 'something'(参见here)然后使用css您可以在标签上添加一个红色星号

【讨论】:

    【解决方案2】:

    考虑编写一个模板标签,接收field 并返回field.label,如果该字段是必需的,则以星号为后缀,如果不是,则返回field.label。你可以这样使用:

    <div>
        {{ field.errors }}
        {{ field | append_ast_if_req }}
        {{ field }}
    </div>
    

    你的模板标签可以是:

    @register.filter
    def append_ast_if_req (field):
        if field.field.required:
             return field.label + '*'
        else:
             return field.label
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-21
      • 1970-01-01
      • 2018-03-23
      • 1970-01-01
      • 1970-01-01
      • 2010-09-29
      • 1970-01-01
      相关资源
      最近更新 更多