【问题标题】:Is there a way to simplify this code for Flask WTForms errors in template有没有办法为模板中的 Flask WTForms 错误简化此代码
【发布时间】:2021-02-19 12:48:20
【问题描述】:
这是我当前在register.html 中的代码,有没有办法让这段代码的行数更少?
{% for error in reg_form.confirm_pass.errors %}
<div class="ui tiny compact negative message">
<p>{{ error }}</p>
</div>
{% endfor %}
{% for error in reg_form.password.errors %}
<div class="ui tiny compact negative message">
<p>{{ error }}</p>
</div>
{% endfor %}
{% for error in reg_form.errors['email'] %}
<div class="ui tiny compact negative message">
<p>{{ error }}</p>
</div>
{% endfor %}
【问题讨论】:
标签:
flask
jinja2
flask-wtforms
wtforms
【解决方案1】:
你可以定义一个macro:
宏可与常规编程语言中的函数相媲美。它们有助于将常用习语放入可重用的函数中,以免重复自己(“DRY”)。
该宏可以接受一个参数(要显示的 error 消息),您可以将它用于您遇到的每种错误类型,并传递要在每种情况下呈现的特定错误消息。
例如:
{% macro error_macro(error) %}
<div class="ui tiny compact negative message">
<p>{{ error }}</p>
</div>
{% endmacro %}
{% for error in reg_form.confirm_pass.errors %}
{{ error_macro(error) }}
{% endfor %}
{% for error in reg_form.password.errors %}
{{ error_macro(error) }}
{% endfor %}
{% for error in reg_form.errors['email'] %}
{{ error_macro(error) }}
{% endfor %}
这满足了您最初让代码更紧凑的要求,但更重要的是,这意味着如果您想更改错误的样式或格式,您只需在一处更改代码。