【问题标题】: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 %}
    

    这满足了您最初让代码更紧凑的要求,但更重要的是,这意味着如果您想更改错误的样式或格式,您只需在一处更改代码。

    【讨论】:

      猜你喜欢
      • 2022-11-16
      • 1970-01-01
      • 2019-04-03
      • 1970-01-01
      • 1970-01-01
      • 2021-04-13
      • 1970-01-01
      • 2017-11-22
      • 1970-01-01
      相关资源
      最近更新 更多