【python】Flask如何利用flash提示登录失败
在编写登录或者注册页面时,一个必不可少的环节就是如何在用户登录失败或者注册失败时给出响应的提示信息,举个例子:
如何给出上述的红色提示信息呢?其实很简单,只需要两步。
第一步,在登录和主页的视图函数部分编写flash消息(@login是我注册的蓝图)。把它们放在条件判断失败的地方
@login.route('/', methods=['GET', 'POST'])
@login.route('/login', methods=['GET', 'POST'])
def login_():if request.method == 'POST':count = request.form['count']password = request.form['password']if not count or not password:flash('请输入账号和密码!')return redirect(url_for('login.login_'))user = User.query.filter_by(count=count).first()if not user:flash("用户不存在")return redirect(url_for('login.login_'))if count == user.count and user.check_password(password):login_user(user) # 登入用户return redirect(url_for('login.index')) # 重定向到主页flash('账号或密码不正确, 请重新登录!') # 如果验证失败,显示错误消息return redirect(url_for('login.login_')) # 重定向回登录页面return render_template('login.html')@login.route('/register', methods=['GET', 'POST'])
def register():# 如果请求为postif request.method == 'POST':count = request.form.get('count')password = request.form.get('password')repassword = request.form.get('repassword')from app import dbif password == repassword:user = User(count, password)user.set_password(password)db.session.add(user)db.session.commit()return redirect(url_for("login.login_"))else:flash("两次密码不一致!")return render_template("register.html")return render_template('register.html') 第二步,在前端页面利用jinja2模板语法接收flash消息,并把他们放在正确的位置。我这里选择放在h2标题正下方,样式是tip等会列出
======这是登录的页面=======
榕城佳人
{% for item in get_flashed_messages() %}{{ item }}{% endfor %}
======这是注册页面======
注册
{% for item in get_flashed_messages() %}{{ item }}{% endfor %}
这里是tip样式
.tip{font-size:14px;color: red;text-align: center;margin: 10px;margin-top: -10px;
} 这样子就可以搞定啦
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
