使用Flask开发Web应用时如何实现登录用户名错误提示功能?
问题原因
你的前端模板已经预留了错误提示的渲染逻辑,但后端在校验到用户名不存在时,没有向模板传递error参数,导致{% if error %}的判断始终不成立,自然不会展示错误提示。
修复方案
只需要修改app.py中登录接口的错误分支逻辑,给模板传递error参数即可:
@app.route("/login", methods=["GET", "POST"]) def login(): if flask.request.method == "GET": return flask.render_template("login.html") if flask.request.method == "POST": username = flask.request.form["username"] cursor.execute( "SELECT user_name FROM public.users WHERE user_name = %s", [username] ) results = cursor.fetchall() if len(results) != 0: # 如果用户存在,执行登录跳转 return flask.redirect(flask.url_for("main")) else: # 新增error参数传递,值可以是布尔值也可以是自定义提示文本 return flask.render_template("login.html", error="无效的用户名,请重新输入")
如果你直接传递文本作为error的值,前端模板可以直接渲染这个文本,灵活性更高,修改login.html的提示部分即可:
{% if error %} <p style="color:red;margin:10px 0;">{{ error }}</p> {% endif %}
这样不仅能正常展示错误提示,还可以直接在后端自定义不同场景的提示内容,比如密码错误、账号封禁等场景都可以复用这个参数传递不同提示。
内容的提问来源于stack exchange,提问作者Matt Nguyen
相关产品推荐
相关产品推荐

