
本文详解 Flask 项目中 TemplateNotFound: index.html 报错的根本原因与解决方案,重点说明模板路径的默认规则、项目目录结构要求及调试方法,帮助初学者快速构建可运行的 Web 演示应用。
本文详解 flask 项目中 templatenotfound: index.html 报错的根本原因与解决方案,重点说明模板路径的默认规则、项目目录结构要求及调试方法,帮助初学者快速构建可运行的 web 演示应用。
Flask 默认将 templates 文件夹视为模板根目录,但该路径是相对于当前工作目录(Working Directory)而非 Python 脚本所在路径。这意味着:即使你的 main.py 位于 myproject/ 下,且 templates/index.html 结构正确,若你在 myproject/ 外部(如桌面或用户根目录)执行 python myproject/main.py,Flask 仍会尝试在当前终端所在目录下查找 templates/index.html,从而触发 jinja2.exceptions.TemplateNotFound 错误。
✅ 正确做法是:先切换至项目根目录,再运行脚本:
cd myproject/ python main.py
此时 Flask 自动识别同级的 templates/ 文件夹,render_template('index.html') 即可成功加载。
? 验证目录结构(必须严格匹配):
myproject/
├── main.py # Flask 应用入口
└── templates/
└── index.html # 必须在此路径,文件名区分大小写
⚠️ 注意事项:
- 不要手动修改
app = Flask(__name__)中的参数来“修复”路径(如Flask(__name__, template_folder='...')),这会掩盖根本问题,且不利于教学演示的简洁性; - 确保
index.html文件真实存在、无拼写错误(例如不是Index.html或index.htm); - Windows 用户注意路径分隔符无需转义,Flask 自动处理;
- 启动后访问
http://127.0.0.1:5000即可看到页面,浏览器控制台可查看前端 JS 错误(如 Chart.js 加载失败需检查网络连接); - 若使用 VS Code,请确认终端当前路径为
myproject/(左下角显示路径,或执行pwd/cd命令确认)。
? 进阶提示:开发阶段建议始终在项目根目录运行 flask run(需设置 FLASK_APP=main.py 和 FLASK_ENV=development),这是 Flask 官方推荐方式,兼容性更佳:
cd myproject/ set FLASK_APP=main.py set FLASK_ENV=development flask run
(Linux/macOS 将 set 替换为 export)
至此,你的教学演示应用即可稳定运行——后端响应 /submit_order 和 /order_book 接口,前端动态渲染订单簿图表,真正实现全栈交互闭环。











