您必须在正确的位置创建模板文件;在 python 模块旁边的 templates 子目录中(== 您创建 Flask 应用程序的模块)。
错误提示templates/目录下没有home.html文件。确保您在与 python 模块相同的目录中创建了该目录,并且您确实在该子目录中放置了一个 home.html 文件。如果您的应用是一个包,则应在包内创建模板文件夹。
myproject/
app.py
templates/
home.html
myproject/
mypackage/
__init__.py
templates/
home.html
或者,如果您将模板文件夹命名为 templates 以外的其他名称,并且不想将其重命名为默认值,您可以告诉 Flask 使用该其他目录。
app = Flask(__name__, template_folder='template') # still relative to module
您可以通过将EXPLAIN_TEMPLATE_LOADING option 设置为True 来让Flask 解释它是如何尝试查找给定模板的。对于加载的每个模板,您都会在Flask app.logger 的级别INFO 中获得一份报告。
这是搜索成功时的样子;在此示例中,foo/bar.html 模板扩展了 base.html 模板,因此有两个搜索:
[2019-06-15 16:03:39,197] INFO in debughelpers: Locating template "foo/bar.html":
1: trying loader of application "flaskpackagename"
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- /.../project/flaskpackagename/templates
-> found ('/.../project/flaskpackagename/templates/foo/bar.html')
[2019-06-15 16:03:39,203] INFO in debughelpers: Locating template "base.html":
1: trying loader of application "flaskpackagename"
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- /.../project/flaskpackagename/templates
-> found ('/.../project/flaskpackagename/templates/base.html')
蓝图也可以register their own template directories,但如果您使用蓝图更容易将更大的项目拆分为逻辑单元,则不需要这样做。即使为每个蓝图使用额外的路径,也总是首先搜索主 Flask 应用程序模板目录。