进阶部分的web表单介绍了一种让用户提交表单的方法,但是用户如何知道自己状态发生变化了呢。我们可以使用确认消息、警告或者错误提醒的方法。
这种功能是Flask的核心特性---flash
修改hello.py
主要增加了一个条件语句,判断同一会话的前后name是否相同,不同则调用flash。
@app.route('/',methods=['GET','POST'])
def index():
form = NameFome()
if form.validate_on_submit():
old_name = session.get('name')
if old_name is not None and old_name != form.name.data:
flash('Looks like you have change your name')
session['name'] = form.name.data
return redirect(url_for('index'))
return render_template('index.html',form=form,name=session.get('name')
当然只是在视图函数中增加flash也没啥改变,还需要模板对信息渲染。flask把get_flashed_messages()函数开放给模板,用来获取并渲染信息。
增加base.html部分
{% block content %}
<div class="container">
{% for message in get_flashed_messages() %}
<div class="alert alert-warning">
<button type="button" class="close" data-dismiss="alert">×</button>
{{ message }}
</div>
{% endfor %}
{% block page_content %}{% endblock %}
</div>
{% endblock %}
表单是用户提交的数据,有些是一次性的,有些是类似blog的长久数据,保存到数据库比较保险。