您必须在正确的位置创建模板文件。在templates
python模块旁边的子目录中。
该错误表明目录中没有home.html
文件templates/
。确保在与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
选项来True
。对于每个加载的模板,您将获得一个报告记录到Flaskapp.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')
蓝图也可以注册自己的模板目录,但这不是必需的,如果您使用蓝图可以更轻松地在逻辑单元之间拆分较大的项目。即使在每个蓝图中使用其他路径,也始终会首先搜索Flask应用程序主模板目录。
template_folder
路径。