当我们登录摸一个网站时,输入用户名和密码,如果密码输入错误,点击确定按钮后经常会出现一条提示密码错误的消息。这个消息就是flash消息,主要用来提示用户当前操作的结果。flask中也有自己的flash消息,本文主要介绍flask中flash消息的用法。
首先,我们要先编写用户显示flash消息的html文件,为了简单演示,我们直接把放到html中,不再添加其他效果。flask开放了get_flashed_messages函数给模板使用,所谓开发就是我们可以在模板中直接使用,而不用import。
<form method="POST">
{{form.hidden_tag()}}
<p>{{form.name.label}}</p>
{{form.name()}}
<br>{{form.submit }}
</form>
<h6>flashed message</h6>
<p>
{% for message in get_flashed_messages() %}
{{ message }}
{% endfor %}
</p>
接下来,我们看下视图函数的处理过程。视图函数中,通过session获取name字段的数值,如果我们两次提交的数值不一致,就是flash一个name has been changed的消息:
@app.route('/',methods=['GET','POST'])
def index():
form = NameForm()
if form.validate_on_submit():
old_name=session.get('name')
if old_name is not None and old_name != form.name.data:
flash('name has been changed')
return redirect(url_for('index'))
session['name']=form.name.data
return render_template('index.html',form=form)
return render_template('index.html',form=form)
我们看下最终的实现效果:
Github位置:
https://github.com/HymanLiuTS/flaskTs
git clone git@github.com:HymanLiuTS/flaskTs.git
获取本文源代码:
git checkout FL17