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

Flask开发报错AttributeError: 'NoneType' object has no attribute 'email'求助

错误根因

错误触发在NewWeb.py第75行,执行users.query.filter_by(name=user).first()查询用户时,没有匹配到对应记录,found_user被赋值为None,直接对None访问email属性就抛出了这个异常。

常见触发场景

  • 登录后手动删除了数据库内对应用户的记录,session中还保留登录态,提交邮箱更新时查询不到用户
  • session存储的用户名被篡改,和数据库内存储的用户名无法匹配
  • 用户名输入时带前后空格,登录和查询时的处理逻辑不一致导致匹配失败

修复方案

在修改邮箱前新增非空判断,对用户不存在的异常场景做兜底处理,修改后的/user路由代码如下:

@app.route("/user", methods=["POST", "GET"])
def user():
    email = None
    if "user" in session:
        user = session["user"]

        if request.method == "POST":
            email = request.form["email"]
            session["email"] = email

            found_user = users.query.filter_by(name=user).first()
            # 新增非空判断和异常兜底
            if found_user:
                found_user.email = email
                db.session.commit()
                flash("Email Salvestatud!")
            else:
                flash("当前登录用户不存在,请重新登录")
                session.pop("user", None)
                session.pop("email", None)
                return redirect(url_for("login"))
        else:
            if "email" in session:
                email = session["email"]

        return render_template("user.html", email=email)
    else:
        flash("Sa ei ole sisse loginud!")
        return  redirect(url_for("login"))

临时排查方法

本地测试时可以直接删除项目根目录下的users.sqlite3文件,重启服务后会自动重建数据库,重新注册登录即可验证正常流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:06:04