Flask入门教程Hello World环节持续出现404错误求助
Flask Hello World 404错误求助
我正在学习Flask入门教程的Hello World初始环节,但运行代码后持续出现404错误。补充信息:
- 端口5000未被占用
- 已尝试更换端口、配置
instance/config.py中的server_name和application_root,问题仍未解决 - 本人是Flask新手,急需帮助
代码如下:
import os from flask import Flask def create_app(test_config=None): # 创建并配置应用 app = Flask(__name__, instance_relative_config=True) app.config.from_mapping( SECRET_KEY='dev', DATABASE=os.path.join(app.instance_path, 'flaskr.sqlite'), ) if test_config is None: # 非测试环境下加载实例配置(如果存在) app.config.from_pyfile('config.py', silent=True) else: # 加载传入的测试配置 app.config.from_mapping(test_config) # 确保实例文件夹存在 try: os.makedirs(app.instance_path) except OSError: pass # 一个简单的hello页面 @app.route('/hello/') def hello(): return 'Hello, World!' return app if __name__ == "__main__": app = create_app() app.run(debug=True)
目录结构:
- flaskr/
- instance/
- tests/
- venv/
可能的排查方向与解决办法
严格匹配访问路径
你的路由是@app.route('/hello/')(末尾带斜杠),访问时必须完全匹配:- 正确路径:
http://localhost:5000/hello/ - 错误路径:
http://localhost:5000/hello(末尾无斜杠,Flask默认不会自动重定向,会直接返回404)
- 正确路径:
确认代码运行目录
必须在项目根目录(包含flaskr/、instance/的目录)下执行代码,否则Flask无法正确识别应用上下文。执行命令示例:python app.py(替换
app.py为你的实际代码文件名)检查config.py配置冲突
如果你在instance/config.py中设置了APPLICATION_ROOT='/flaskr',访问路径需要加上前缀,即http://localhost:5000/flaskr/hello/。若不需要路径前缀,直接删除application_root配置项即可。验证路由是否注册成功
在create_app函数末尾添加打印路由的代码,启动后查看终端输出,确认/hello/路由存在:print("已注册路由列表:", [rule.rule for rule in app.url_map.iter_rules()])若终端输出里没有
/hello/,说明路由未被正确注册。简化代码排查问题
暂时去掉配置加载逻辑,用最简代码测试:from flask import Flask app = Flask(__name__) @app.route('/hello/') def hello(): return 'Hello, World!' if __name__ == "__main__": app.run(debug=True)运行后访问
http://localhost:5000/hello/,如果正常显示,说明问题出在原代码的配置加载逻辑中,再逐步恢复原有代码排查。
内容的提问来源于stack exchange,提问作者Deven Shah
相关产品推荐
相关产品推荐

