我已经将我的问题编辑得更清楚。当我验证我的表单并且它有错误时,我会刷新我的消息,但这不会在我的模板中呈现:
@app.route('doit', methods=["GET", "POST"])
def doit():
form = MyForm()
if form.validate_on_submit():
flash('success')
else:
if form.errors:
print "You've got errors!"
flash('You have some errors')
print session['_flashes']
return render_template('test.html')
我的用于显示消息的模板:
{% with messages = get_flashed_messages() %}
{{ messages }}
<br/>
{{ session }}
{% endwith %}
当我提交有错误的表单时,我会快速flash("You have some errors")
,当我将会话打印到控制台时,我会在会话中看到_flashes
,并显示错误消息:
# my console output
You've got errors!
[('message', 'You have some errors')]
但是,当模板呈现时,{{ session }}
根本没有_flashes
,因此get_flashed_messages()
始终为空列表。结果没有消息闪烁。
我做错了什么?
答案 0 :(得分:3)
好的伙计们,我再次相当愚蠢。事实证明表单是通过AJAX发布的,但调用的结果是期望JSON格式而不是整个HTML模板。
我已经改为返回一个json响应,现在它很好。