将 * 添加到必填字段的标签

Add a * to required field's label

我想在标签的文本之前(或之后)添加一个“*”,以备不时之需。

我现在可以通过在我的模板中使用它来做到这一点:

{% for field in form %}
    <label for="{{ field.name }}">
    {{ '*' if field.flags.required }}{{ field.label.text }} :
    </label>
    {{ field }}
{% endfor %}

有没有比这更好的方法,至少是避免手动添加标签元素的方法?

你就是这样做的,没有比检查标志然后输出你想要的更简单的方法了。不过,您可以更直接地更改标签的文本。您还可以用它制作一个宏,这样您就不需要为每个模板中的每个字段复制和粘贴太多内容。创建模板 "forms.html":

{% macro form_field(field) %}
    {% if field.flags.required %}{{ field.label(text='*' + field.label.text) }}
    {% else %}{{ field.label }}{% endif %}:
    {{ field }}
{% endmacro %}

然后在其他模板中使用:

{# import the macro at the top of the template #}
{% from "forms.html" import form_field %}

{# use it in your for loop #}
{% for field in form %}
    {{ form_field(field) }}
{% endfor %}

我试图找到这个问题的更好答案,在我的例子中,这个 css 技巧非常有效,我不需要改变任何其他东西:

将文件添加到 the-flask-wtf-project/app/static/styles/custom。css

其中包含以下内容:

div.required label:after {
    content: " *";
    color: red;
}

然后确保在 {% block scripts %}

中包含 base.html 中的 css(或所有使用表单的模板)
    <link rel="stylesheet" type="text/css" href="{{url_for('static',filename='styles/custom.css') }}">

我仍然认为自己是新手,所以如果这个提示不知何故被关闭,请插话。

只是我的 2 美分,我非常满意并且在这里或其他地方的任何其他线程上都不容易找到。