如何用烧瓶中的不同消息闪烁成功和危险。

时间:2018-07-10 20:59:53

标签: python flask

我有一个flask应用程序,我想根据操作闪烁不同的警报消息。

这是我的第一封邮件,我在其中检查电子邮件是否匹配我的正则表达式模式:

reciver = str(email)
if not re.match(r"[^@]+@[^@]+\.[^@]+", reciver):
    flash("Please enter a valid email address", 'error')
    return render_template("about.html")

这是第二条消息,如果成功发送一条消息,则会显示该消息:

flash('Message sent succesfully', 'succes')   
return render_template("about.html")

这是我的HTML代码:

      <h1 class="mb-5"> Enter your message, and i will get back to you as soon as possible</h1>
      {% with messages = get_flashed_messages() %}
        {% if messages %}
            {% for message in messages %}
            <div class="alert alert-success">
            <li>{{ message }} </li>
         </div>
        {% endfor %}
        {% endif %}
        {% endwith %}
        {% block body %}{% endblock %}

我该如何对第一条消息发出警报危险,对第二条消息发出警报成功,是否可以使用某种条件?

2 个答案:

答案 0 :(得分:4)

您可以使用以下模式来指定flash functioncategory参数。

  

:参数类别:消息的类别。以下值                        建议:'message'用于任何形式的消息,                        'error'表示错误,'info'表示信息                        消息和'warning'表示警告。但是任何                        字符串的种类可以用作类别。

{% with messages = get_flashed_messages(with_categories=true) %}
  {% if messages %}
    {% for category, message in messages %}
      <div class="alert {{ category }}"> {{ message|capitalize }} </div>
    {% endfor %}
  {% endif %}
{% endwith %}

通过将category放在class属性中,您可以将特殊颜色与某些CSS规则相关联,例如:

.alert.succes {
  background-color: green;
}

.alert.error {
  background-color: red;
}

flash('Message sent succesfully', 'succes')
flash("Please enter a valid email address", 'error')

这些调用将生成:

<div class="alert succes">  Message sent succesfully </div>
<div class="alert error">  Please enter a valid email address </div>

官方文档:http://flask.pocoo.org/docs/1.0/patterns/flashing/#flashing-with-categories

答案 1 :(得分:2)

对于烧瓶1.0.2,这种类似但略有不同的方法对我有用-我认为稍微简单一点:

flash('This is an error message in red', 'danger')

flash('This is an informational message in blue', 'info')

在Flask HTML模板中:

   {% with messages = get_flashed_messages(with_categories=true) %}
      {% if messages %}
        {% for category, message in messages %}
           <div class="alert alert-{{ category }}" role="alert"> {{ message }}</div>
        {% endfor %}
      {% endif %}
    {% endwith %}

这样,我无需定义任何CSS,只需使用默认Flask发行版中已经存在的内容即可。