Flask登录后如何在greet页面显示含用户名的欢迎语?
解决登录后欢迎语显示问题
步骤1:修正login函数的POST请求逻辑
在登录成功返回greet.html时,需要把用户名传递给模板:
@app.route("/login2", methods=["POST", "GET"]) def login(): if request.method == "POST": session.permanent = True user = request.form["nm"] session["user"] = user # 传递user参数给模板 return render_template("greet.html", user=user) else: if "user" in session: return redirect(url_for("greet")) return render_template("login2.html")
步骤2:补充greet路由的处理逻辑
你代码里用到了redirect(url_for("greet")),需要添加对应的路由从session中获取用户信息并传递给模板:
@app.route("/greet") def greet(): # 从session中读取已登录用户 user = session.get("user") if user: return render_template("greet.html", user=user) # 未登录则跳转回登录页 return redirect(url_for("login"))
步骤3:修改greet.html模板接收变量
把模板里的空占位符改为接收user变量:
{% extends "base.html" %} {% block content %} <h1>Welcome</h1> <p>Hi, Welcome to the app {{ user }} .</p> {% endblock %}
完成以上修改后,不管是登录成功直接渲染欢迎页,还是从session跳转进入欢迎页,都能正确显示带用户名的欢迎语。
内容的提问来源于stack exchange,提问作者pc510895
相关产品推荐
相关产品推荐

