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">×</a>
{{ message }}
</li>
{%- endfor -%}
</ul>
{%- endif -%}
{%- endwith %}
Run Code Online (Sandbox Code Playgroud)
但问题是我总是只得到 'message' 类别,所以<li>与 classes 一样'alert alert-message'。
我阅读了文档,对我而言,我做的一切都正确,但'flash'函数忽略了第二个参数并始终使用默认值'message'(而不是我给出的“成功”)。
我想知道是否有人遇到过这个问题并且知道如何处理它?
编辑:根据其他评论和测试 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)
当您调用时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">×</button>
{{ message[1] }}
</div>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)