我试图渲染文件home.html。该文件存在于我的项目中,但我一直得到jinja2.exceptions。TemplateNotFound: home.html当我试图渲染它。为什么弗拉斯克找不到我的模板?
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def home():
return render_template('home.html')
/myproject
app.py
home.html
我认为Flask默认使用目录模板。你的代码应该是这样的
假设这是你的hello.py
from flask import Flask,render_template
app=Flask(__name__,template_folder='template')
@app.route("/")
def home():
return render_template('home.html')
@app.route("/about/")
def about():
return render_template('about.html')
if __name__=="__main__":
app.run(debug=True)
你的工作空间结构就像
project/
hello.py
template/
home.html
about.html
static/
js/
main.js
css/
main.css
此外,您还创建了两个HTML文件,名称为home.html和about.html,并将这些文件放在模板文件夹中。
如果您从已安装的包中运行代码,请确保模板文件存在于<python根>/lib/site-packages/your-package/templates目录下。
一些细节:
在我的情况下,我试图运行项目flask_simple_ui和jinja的例子总是说
jinja2.exceptions。TemplateNotFound: form.html
诀窍在于示例程序将导入已安装的包flask_simple_ui。在这个包中使用的ninja是用于查找包路径的根目录,在我的例子中…Python /lib/site-packages/flask_simple_ui,而不是人们期望的os.getcwd()。
不幸的是,setup.py有一个错误,没有复制任何html文件,包括丢失的form.html。一旦我修复了setup.py, TemplateNotFound的问题就消失了。
我希望它能帮助到一些人。