Flask应用出现jinja2.exceptions.TemplateNotFound错误:index.html未找到
Flask模板找不到错误排查方案
问题描述
运行Flask应用时触发以下错误:
jinja2.exceptions.TemplateNotFound: index.html
已确认项目目录结构符合规范:
├── app.py ├── templates │ └── index.html └── ...
app.py核心代码:
from flask import Flask, render_template app = Flask(__name__) @app.route('/') def index(): return render_template('index.html') if __name__ == '__main__': app.run()
index.html文件存在且文件名拼写正确,使用Flask版本为2.3.2,反复检查目录结构后问题仍未解决。
排查与解决步骤
1. 确保在正确路径启动应用
Flask默认从启动脚本所在目录加载templates文件夹。如果从上级目录或其他路径启动应用,会导致模板路径识别错误:
- 错误示例:在项目父目录执行
python my_project/app.py - 正确操作:先进入app.py所在目录,再执行
python app.py
2. 显式指定模板文件夹路径
如果无法固定启动路径,可在初始化Flask应用时手动指定模板文件夹的绝对路径,避免路径识别偏差:
import os from flask import Flask, render_template # 获取当前脚本所在目录的绝对路径 base_dir = os.path.abspath(os.path.dirname(__file__)) # 显式绑定模板文件夹位置 app = Flask(__name__, template_folder=os.path.join(base_dir, 'templates')) @app.route('/') def index(): return render_template('index.html') if __name__ == '__main__': app.run()
3. 检查文件权限(Linux/macOS)
类Unix系统下,需确保templates文件夹和index.html文件具备可读权限:
chmod -R 644 templates/
4. 核对IDE运行配置
使用PyCharm、VS Code等IDE时,检查运行配置的工作目录是否设置为app.py所在的目录,避免IDE默认以项目根目录作为启动路径。
5. 清除缓存并重启应用
Flask可能缓存旧的路径配置,可尝试:
- 完全关闭应用进程后重新启动
- 浏览器强制刷新页面(Ctrl+F5)清除前端缓存
内容的提问来源于stack exchange,提问作者Nguyen Ngoc Tung Lam
相关产品推荐
相关产品推荐

