gpt4 book ai didi

python - 即使模板文件存在,Flask 也会引发 TemplateNotFound 错误

转载 作者:IT老高 更新时间:2023-10-28 20:21:24 32 4
gpt4 key购买 nike

我正在尝试渲染文件 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

最佳答案

您必须在正确的位置创建模板文件;在 python 模块(== 您创建 Flask 应用程序的模块)旁边的 templates 子目录中。

错误提示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 让 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 应用程序模板目录。

关于python - 即使模板文件存在,Flask 也会引发 TemplateNotFound 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23327293/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com