即使模板文件存在,Flask仍会引发TemplateNotFound错误
我正在尝试呈现文件home.html
。 该文件存在于我的项目,但我不断收到jinja2.exceptions.TemplateNotFound: home.html
当我尝试呈现它。 为什么Flask无法find我的模板?
from flask import Flask, render_template app = Flask(__name__) @app.route('/') def home(): return render_template('home.html')
/myproject app.py home.html
您必须在正确的位置创build您的模板文件; 在Python模块旁边的templates
子目录中。
该错误表明templates/
目录中没有home.html
文件。 确保你创build的目录和你的python模块在同一个目录下,而且你确实把一个home.html
文件放在了这个子目录下。 如果您的应用程序是一个包,则应该在包内创build模板文件夹。
myproject/ app.py templates/ home.html
myproject/ mypackage/ __init__.py templates/ home.html
或者,如果您将模板文件夹命名为模板之外的其他templates
并且不想将其重命名为默认templates
,则可以让Flask使用该其他目录。
app = Flask(__name__, template_folder='template') # still relative to module
检查:
- 该模板文件有正确的名称
- 该模板文件位于名为“模板”的子目录中
- 您没有与您的应用程序同名的子目录,或者模板目录位于该子目录中。
如果这不起作用,打开debugging( app.debug = True
),这可能有助于找出什么是错的。
不知道为什么,但与Python 3.6我不得不使用下面的文件夹结构(把“模板”低一级…):
test/ app/ hello.py static/ main.css templates/ home.html virtual/ pip-selfcheck.json etc...
您需要将所有.html
文件放在python模块旁边的模板文件夹中。 如果您的html文件中有任何图像,则需要将所有文件放在名为static的文件夹中
在以下结构中
project/ hello.py static/ image.jpg style.css templates/ homepage.html virtual/ filename.json