6-14章节 修改密码跳转到 login 页面后,没有消息闪现

来源:7-14 .修改密码-

宝慕林6589715

2017-08-11

老师,我在login.html 页面故意写错密码来登录,可以正确显示“密码错误”的消息闪现,但我在修改密码并自动跳转到 login 页面后,没有出现 "修改密码成功,请重新登录“ 的消息闪现,我确认 pwd() 视图函数 的flash语句没有写错,如下:

flash('修改密码成功,请重新登录!', 'ok')


同时我的 login.html 针对flash的代码也是正确的:

<!--flash message-->
   {% for msg in get_flashed_messages(category_filter=["ok"]) %}
       <p class="login-box-msg" style="color:green"> {{ msg }} </p>
   {% endfor %}
   {% for msg in get_flashed_messages(category_filter=["err"]) %}
       <p class="login-box-msg" style="color:red"> {{ msg }} </p>
   {% endfor %}
<!--flash message-->




写回答

3回答

rustgopy

2017-08-11

同学,你好,你把views的截图给老师看下,我帮你分析!

0
4
宝慕林6589715
回复
rustgopy
原来如此! 我确实不知道“flash是把那些提示消息保存到session里面”这个知识点, 怪不得怎么都检查不出来,原来是 session.clear() 太简单粗暴了,谢谢老师指点!
2017-08-13
共4条回复

rustgopy

2017-08-13

具体代码如下:

# 退出
@admin.route("/logout/")
@admin_login_req
def logout():
    session.pop("admin", None)
    session.pop("admin_id", None)
    return redirect(url_for("admin.login"))


# 修改密码
@admin.route("/pwd/", methods=["GET", "POST"])
@admin_login_req
def pwd():
    form = PwdForm()
    if form.validate_on_submit():
        data = form.data
        admin = Admin.query.filter_by(name=session["admin"]).first()
        from werkzeug.security import generate_password_hash
        admin.pwd = generate_password_hash(data["new_pwd"])
        db.session.add(admin)
        db.session.commit()
        flash("修改密码成功,请重新登录!", "ok")
        return redirect(url_for('admin.logout'))
    return render_template("admin/pwd.html", form=form)


0
0

宝慕林6589715

提问者

2017-08-11

老师,我的 logout() 和 pwd() 视图函数 截图如下: 

//szimg.mukewang.com/598d61e80001267707170496.jpg


0
0

Python Flask 构建微电影视频网站

Python 最好用轻量级框架,让你轻松胜任 Python Web 工程师

683 学习 · 663 问题

查看课程