Flask和Jinja2多次使用相同的模板名称

时间:2018-11-17 20:27:22

标签: python flask jinja2

我有一个Flask项目,其结构如下:

├── config.py
├── errors
│   ├── __init__.py
│   ├── handlers.py
│   └── templates
│       ├── errors
│       │   ├── 403.html
│       │   ├── 404.html
│       │   └── 500.html
│       └── default_layout.html
├── home
│   ├── __init__.py
│   ├── routes.py
│   └── templates
│       ├── about
│       │   └── general.html
│       └── default_layout.html
├── static
│   └── style.css
└── templates
    └── default_layout.html

我的应用程序包含两个蓝图:错误和主页。

有没有办法让我的蓝图中的模板文件扩展具有相同文件名的多个模板文件?我遇到以下导致异常的情况:

1)app / errors / templates / errors / 403.html:

{% extends 'default_layout.html' %}
{% block error_content %}
    <div class="content-section">
        <h1>404 error</h1>
        <p>{{ error }}</p>
    </div>
{% endblock error_content %}

2)app / errors / templates / default_layout.html:

{% extends 'default_layout.html' %}
{% block content %}
    <div class="content-section">
        <h1>NESTED BLOCK</h1>
        {% block error_content %}{% endblock %}
    </div>
{% endblock content %}

3)app / templates / default_layer.html:

{% block content %}{% endblock %}

我希望1)中引用的default_layout.html引用2),而2)中引用的default_layout.html引用3)。

1 个答案:

答案 0 :(得分:0)

一种方法是使用蓝图的名称作为范围进一步嵌套模板。例如,

errors/templates/default_layout.html

将成为

errors/templates/errors/default_layout.html

使用它会变成{% extends "errors/default_layout.html" %}