我想在标签的文本之前(或之后)添加'*',以防需要提交。
我现在可以在我的模板中使用它来执行此操作:
{% for field in form %}
<label for="{{ field.name }}">
{{ '*' if field.flags.required }}{{ field.label.text }} :
</label>
{{ field }}
{% endfor %}
有没有比这更好的方法,至少是一种避免手动添加标签元素的方法?
答案 0 :(得分:2)
如果你这样做,没有比通过检查标志然后输出你想要的更简单的方法。但是,您可以更直接地更改标签的文本。你也可以制作一个宏,这样你就不需要为每个模板中的每个字段复制和粘贴那么多。创建模板&#34; forms.html&#34;:
{% 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 %}
答案 1 :(得分:0)
我试图为这个问题找到更好的答案,在我的例子中,这个 css 技巧效果很好,我不需要改变任何其他东西:
在-flask-wtf-project/app/static/styles/custom.css中添加一个文件
其中包含以下内容:
div.required label:after {
content: " *";
color: red;
}
然后确保将 base.html 中的 css(或所有使用表单的模板)包含在 {% block scripts %}
<link rel="stylesheet" type="text/css" href="{{url_for('static',filename='styles/custom.css') }}">
我仍然认为自己是一个新手,所以如果这个提示以某种方式关闭,请加入。
只是我的 2 美分,我很满意,在这里或其他地方的任何其他线程上都找不到。