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

Flask启动服务器后持续出现404 Not Found错误的求助

Flask 404 Not Found 错误原因及解决方法

核心原因拆解

  • 缩进错误:第一个代码里的if __name__ == '__main__':被错误缩进在call_status函数内部,导致服务器启动代码不会自动执行;就算手动启动服务器,代码里只定义了/call-status的POST路由,访问根路径/必然返回404。
  • 语法遗漏+条件错误:第二个测试代码有两个问题——① 缺少Flask应用实例创建语句app = Flask(__name__);② 启动条件写错成if __name__ == "__name__",正确写法是if __name__ == "__main__",导致app.run()不会执行,服务器根本没启动。
  • 路径不匹配:你访问的是根路径/,但第一个代码里没有对应这个路径的路由,只有接受POST请求的/call-status,所以GET请求根路径会返回404。

分步解决方法

修复第一个业务代码

  1. 修正缩进:把服务器启动代码移到全局作用域,去掉多余缩进;
  2. 可选添加根路径路由:方便快速测试服务器是否正常运行;
  3. 注意请求方法匹配:/call-status只接受POST请求,测试时要用POST方式访问(比如用curl命令:curl -X POST -d "CallStatus=test" http://127.0.0.1:5000/call-status)。

修复后代码:

import requests
from API import CHAT_ID, TOKEN
from flask import Flask, request
    
app = Flask(__name__)

@app.route('/call-status', methods=['POST'])
def call_status():
    call_status = request.form['CallStatus']
    requests.post(f"https://api.telegram.org/bot{TOKEN}/sendMessage",
                  params={"chat_id": CHAT_ID, "text": call_status})
    return "OK"

# 可选:添加根路径GET路由,用于测试
@app.route('/')
def index():
    return "服务器正常运行,POST请求请访问 /call-status"

if __name__ == '__main__':
    app.run(host='127.0.0.1', port=5000)

修复第二个测试代码

补全Flask实例创建语句,修正启动条件:

from flask import Flask

# 必须创建Flask应用实例
app = Flask(__name__)

@app.route('/')
def index():
    return 'Hello world!'

# 修正启动条件的字符串
if __name__ == "__main__":
    app.run(host="127.0.0.7", port=5000)

关于errorhandler的补充

你添加errorhandler后返回200,只是让服务器不再返回404状态码,但并没有解决“请求路径没有对应路由”的根本问题。如果只是想避免404提示可以保留,但更建议通过添加对应路由来解决核心问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 19:05:18