我正在尝试渲染文件 home.html
。该文件存在于我的项目中,但当我尝试渲染它时,我不断收到 jinja2.exceptions.TemplateNotFound: home.html
。为什么 Flask 找不到我的模板?
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def home():
return render_template('home.html')
/myproject
app.py
home.html
原文由 Srdan Ristic 发布,翻译遵循 CC BY-SA 4.0 许可协议
您必须在正确的位置创建模板文件;在
templates
python 模块旁边的子目录中(== 您创建 Flask 应用程序的模块)。该错误表明
templates/
目录中没有home.html
文件。确保您在与 python 模块相同的目录中创建了该目录,并且您确实在该子目录中放置了一个home.html
文件。如果您的应用程序是一个包,则应在包 内 创建模板文件夹。或者,如果您将模板文件夹命名为
templates
并且不想将其重命名为默认名称,您可以告诉 Flask 使用其他目录。您可以通过将
EXPLAIN_TEMPLATE_LOADING
选项 设置为True
来要求 Flask 解释它是如何尝试找到给定模板的。对于加载的每个模板,您都会在 Flaskapp.logger
级别INFO
中记录一份报告。这是搜索成功时的样子;在此示例中,
foo/bar.html
模板扩展了base.html
模板,因此有两个搜索:蓝图也可以 注册自己的模板目录,但如果您使用蓝图可以更轻松地跨逻辑单元拆分更大的项目,则这不是必需的。主 Flask 应用程序模板目录总是首先被搜索,即使在每个蓝图使用附加路径时也是如此。