Flask:Flash 函数忽略“类别”参数

c00*_*web 2 python jinja2 flask flash-message

所以我写控制器:

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

然后在我的模板中,我输出这样的 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 %}
Run Code Online (Sandbox Code Playgroud)

但问题是我总是只得到 'message' 类别,所以<li>与 classes 一样'alert alert-message'
我阅读了文档,对我而言,我做的一切都正确,但'flash'函数忽略了第二个参数并始终使用默认值'message'(而不是我给出的“成功”)。

我想知道是否有人遇到过这个问题并且知道如何处理它?

Seb*_*ius 5

编辑:根据其他评论和测试 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')
Run Code Online (Sandbox Code Playgroud)

  • 您不需要为其提供 kwarg。我以`flash('message', 'category')`的形式使用它,它工作正常。 (3认同)

Gre*_* Li 5

当您调用时get_flashed_messages(with_categories=True),它会返回表单中的元组列表(category, message)

flash()所以现在你可以这样使用:

flash('some message', 'success') # `category=` is needn't
Run Code Online (Sandbox Code Playgroud)

在 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 %}
Run Code Online (Sandbox Code Playgroud)