将烧瓶模板扩展到模块文件夹之外
问题描述
由于某些原因,我无法扩展base.html模板。
我的应用结构
-app
|-- main
| |-- __init__.py
| |-- views.py
|-- templates
| |-- main
| | |-home.html
| |-- base.html
我的app/main/views.py
from flask import (
Blueprint,
render_template
)
main_blueprint = Blueprint('main',
__name__,
template_folder='../templates/main'
)
@main_blueprint.route('/')
def index():
return render_template('index.html')
我的应用程序/Templates/base.html
<html> ...
{% block content %}
{% endblock %}
</html>
我的应用程序/Templates/main/index.html
{% extends 'base.html' %}
{% block content %}
<h1>Testing</h1>
{% endblock %}
当我尝试运行该应用程序时,收到错误:
jinja2.exceptions.TemplateNotFound: base.html
您知道我做错了什么吗?
解决方案
快速修复以使其正常工作:在创建应用程序实例时使用Flask(__name__, template_folder="../templates")
。
如果您没有显式传递flask应用程序的TEMPLATE_Folder,它将在同一目录中查找templates
。在您的例子中,它在主文件夹下查找,而Flask找不到任何模板。对于构建flask应用程序代码,有一些很好的自以为是的方法。请对它们进行研究,并决定哪些适合您。
相关文章