Flask学习(二):Flash案例代码修改

案例中的原始代码为:

@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('Looks like you have changed your name!')
        session['name'] = form.name.data
        return redirect(url_for('index'))
    return render_template('index.html', form=form, name=session.get('name'))

但是我使用该代码重新打开一个浏览器,保证原先session已经不存在,然后打开主页之后submit之后会直接抛出异常这里写图片描述
说name不存在,查看我们代码是取得session[‘name’],所以我直接输出session这个dic的所有key,

print({x for x in session.keys()})

当第一次输出的时候之后一个{‘csrf_token’},也就是说这时候session这个dic里面没有name这个key,所以直接去获取值得话就会报错。因此,需要修改代码,进来的时候需要判断session里面是否有name,如果没有的话则不能取old_name,需要先设置session[‘name’]的值,然后old_name再去取值。代码如下:

def index():
    name = None
    form = NameForm()
    if form.validate_on_submit():
        if 'name' in session:
            old_name = session['name']
            if old_name is not None and old_name != form.name.data:
                flash('Look like you have changed your name')
            elif old_name is None:
                session['name'] = form.name.data
        else:
            session['name'] = form.name.data
            old_name = session['name']
        return redirect(url_for('index'))
    return render_template('index.html', form=form, name=session.get('name'))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值