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。
分步解决方法
修复第一个业务代码
- 修正缩进:把服务器启动代码移到全局作用域,去掉多余缩进;
- 可选添加根路径路由:方便快速测试服务器是否正常运行;
- 注意请求方法匹配:
/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
相关产品推荐
相关产品推荐

