Flask-Bootstrap在一个块中组合闪存消息

时间:2015-05-07 15:56:32

标签: flask

我在我的项目中使用了flask-bootstrap,剩下的唯一怪癖是每个flash消息都显示在他们自己的块中,所以他们"堆积"当页面显示3条消息时非常快。无论我给他们什么类别,总是橙色。有没有办法覆盖该行为并将Flash消息组合在一个使用该类别的正确颜色的块中?

1 个答案:

答案 0 :(得分:2)

这是我用来显示Flash消息的代码,我使用手动添加的twitter bootstrap html/css/js文件。要启用类别,您需要代码中的第二行。我有{% if category == 'message' %},因为默认的Flash类别称为'message',我想将其显示为警告。您还必须确保您的类别名称与css classes相匹配。 classes在基本bootstrap theme中是'成功','信息','警告'和'危险'。

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

要让它们全部显示在一个块中,您只需在div中移动模板中的for循环。

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

message.0.0在哪里获取第一条消息的类别。您还可以查看flash examples中的最后一个示例,了解如何将不同的邮件类别组合在一起。