将烧瓶模板扩展到模块文件夹之外

2022-02-27 00:00:00 python flask jinja2

问题描述

由于某些原因,我无法扩展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应用程序代码,有一些很好的自以为是的方法。请对它们进行研究,并决定哪些适合您。

相关文章