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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 18:15:18