You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Flask开发登录站点如何在模板中显示已登录用户的用户名

问题原因
  • 登录验证通过后,仅标记了登录状态,未将用户名存入session,后续请求无法获取对应用户信息
  • 渲染profile.html模板时,没有将username变量传入模板,模板中的占位符无法匹配到对应值
修复步骤

步骤1:登录成功后存储用户名到session

修改index路由中登录成功的逻辑,添加存储用户名的代码:

if info['email'] == username and info['password'] == password:
    session['loginsuccess'] = True
    # 新增:把数据库中存储的用户名存入session
    session['username'] = info['username']
    return redirect(url_for('profile'))

步骤2:渲染模板时传入username参数

修改profile路由的返回逻辑,将session中存储的username传入模板:

@app.route('/new/profile')
def profile():
    # 优化:用get方法取值避免未登录时访问抛出KeyError
    if session.get('loginsuccess') == True:
        return render_template("profile.html", username=session.get('username'))
    # 新增:未登录时跳转到登录页
    return redirect(url_for('index'))

可选方案:模板直接读取session

你也可以不用修改视图函数,直接把模板中的{{username}}替换为{{session.username}},Flask模板默认可以直接访问session对象。

额外优化建议
  • 你当前的代码直接明文存储用户密码,存在严重安全风险,建议使用bcrypt等库对密码做哈希加密后再存储
  • 目前profile路由未做未登录访问的拦截,直接访问/new/profile路径会抛出KeyError,建议按上面的示例用get方法取值并补充未登录跳转逻辑
  • 代码中引入的cryptography相关代码目前未实际使用,不需要可以删除

内容的提问来源于stack exchange,提问作者Gabriel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 08:15:03