Flask服务调用视图函数后仍返回404错误求助
问题
开发基于Flask+Hugging Face BART的文本摘要应用,采用HTTP-only Cookie实现认证功能。调用/register路由时,已通过调试确认视图函数register()被执行,但无论请求数据是否合法,最终始终返回404 Not Found错误。环境配置:Python 3.11、Flask 3.0.3、Werkzeug 3.0.3。
问题排查与修复
1. User模型查询方法的致命问题
在models.py的User类中,find_by_username方法使用了first_or_404():
@classmethod def find_by_username(cls, username : str): return cls.query.filter_by(username = username).first_or_404()
first_or_404()会在查询不到用户时直接抛出404异常,Flask会自动返回404响应,导致注册逻辑无法继续执行。我们需要的是查询不到时返回None,而非直接触发404,修改为:
@classmethod def find_by_username(cls, username : str): return cls.query.filter_by(username = username).first()
2. register函数缩进错误
app.py中register函数的print语句缩进层级错误,会导致语法逻辑异常:
def register(): print("Register function called") data = request.json
修正为统一缩进:
def register(): print("Register function called") data = request.json
3. 数据库会话调用错误
注册逻辑中错误地将db.session当作方法调用(多了括号):
# 错误写法 db.session().add(new_user) db.session().commit()
db.session是对象,直接调用其方法即可:
# 正确写法 db.session.add(new_user) db.session.commit()
4. 额外优化建议
- 删除注册逻辑中重复的
data = request.json行 - 异常捕获时返回明确的状态码,便于前端处理:
return jsonify({"error": "Registration Failed"}), 500
内容的提问来源于stack exchange,提问作者tanLe
相关产品推荐
相关产品推荐

