Flask:忽略'category'参数的Flash函数

时间:2013-08-23 07:09:30

标签: python flask jinja2 flash-message

所以我写控制器:

@app.route('/')
def index():
    flash('Hello world!', 'success')
    return render_template('index.html')

然后在我的模板中输出如下的flash消息:

{%- with messages = get_flashed_messages(with_categories=true) -%}
{%- if messages -%}
    <ul class="flashes unstyled">
    {%- for category, message in messages -%}
        <li class="alert alert-{{ category }}">
            <a class="close" data-dismiss="alert">&times;</a>
            {{ message }}
        </li>
    {%- endfor -%}
    </ul>
{%- endif -%}
{%- endwith %}

但问题是我总是得到'消息'类别,因此<li>与类'alert alert-message'一致。
我阅读了文档,至于我,我做的一切都是正确的,但是'flash'函数忽略了第二个参数,并且始终使用默认值'message'(而不是由我'成功'给出)。

我想知道是否有人有这个问题,知道如何处理它?<​​/ p>

2 个答案:

答案 0 :(得分:2)

编辑:根据其他评论并测试kwarg是不必要的。

根据http://flask.pocoo.org/docs/api/#message-flashing处的文档,您似乎需要使用此格式。 flash(message, category='message')

@app.route('/')
def index():
    flash('Hello world!', category='success')
    return render_template('index.html')

答案 1 :(得分:2)

当您致电get_flashed_messages(with_categories=True)时,它会返回(category, message)形式的元组列表。

现在您可以像这样使用flash()

flash('some message', 'success') # `category=` is needn't

在html中,您可以在通话中循环播放消息:

{% for message in get_flashed_messages(with_categories=True) %}
<div class="alert alert-{{ message[0] }}">
    <button type="button" class="close" data-dismiss="alert">&times;</button>
    {{ message[1] }}
</div>
{% endfor %}