flash消息

7 篇文章 0 订阅

请求完成后,想要让用户知道状态发生了变化
确认信息,警告,或者错误提醒
例子:

用户提交了一个错误的登录表单之后,服务器发回的响应重新渲染了登录表单,并在表单上显示了一个消息,提示用户用户名或者密码错误

flash()函数

修改上一个hello.py

#主页
@app.route('/')
def index():
    name = None
    form = NameForm()
    if form.validate_on_submit():
        old_name = session.get['name']
        #每次提交的表单的名字都会和存储在session会话中的名字比较
        if old_name is not None and old_name!=form.name.data:
            #名字不同显示flash消息
            flash('Looks like you have changed your name!')
            # 会用新名字存储到用户会话session中
            session['name'] = form.name.data
            return redirect(url_for('index'))
    #渲染,模板会变化
    return render_template('index.html',form=form,name=session.get('name'))

用户会话中存储的名字是上一个表单中提交的数据
如果两个名字不一样,就会调用flash()函数,在发给客户端的下一个响应中显示消息

仅调用flash()函数不能显示出消息,还用在模板中渲染这些消息
在基模板中渲染flash消息,这样所有的页面都会使用这些消息

get_flashed_messages()函数

flask将get_flashed_messages()函数开放给模板,用来获取并渲染消息
上一个版本的base.html中写入

<!-- content中有一个<div>容器,包含了页面头部 -->
{% block content %} <!-- content表示主体内容 -->
<div class="container">
    {% for message in get_flashed_messages() %}
    <div class="alert alert-warning">
        <button type="button" class="colse" data-dismiss="alert">&times;</button>
        {{message}}
    </div>
    {%endfor%}

    {% block page_content%}{%endblock%}
</div>

{% endblock%}

使用alert-warning渲染所有的消息
模板中使用循环,请求循环中每次调用flash()函数都会生成消息,可能有多个消息在排队等待显示
get_flashed_messages()函数获取消息在下次调用时不会再次返回,flash消息只显示一次,然后消失

源代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值