如何在单独的文件中使用> = 2块渲染render_template()?

时间:2013-03-19 16:03:46

标签: python flask jinja2

由于Jinja2有阻止使用{% block _name_ %}{% endblock %}将模板拆分为单独的文件,我想在Flask上实现它应该相当容易,但我无法将头脑包裹起来在它周围。

承诺

我有这个结构:

daddy_template.html
    son.html
    daughter.html

所有模板大致包含以下内容:

<!-- daddy_template.html -->
<div id="son">{% block son %}{% endblock %}</div>
<div id="daughter">{% block daughter %}{% endblock %}</div>

<!-- son.html -->
{% extends "daddy_template.html" %}
{% block son %}
<p>Knock, knock</p>
{% endblock %}

<!-- daughter.html -->
{% extends "daddy_template.html" %}
{% block daughter %}
<p>Who is it?</p>
{% endblock %}

转弯

我只知道Flask中的render_template()来准备一个模板,并且一次只需要一个模板,所以除了函数参数中提供的一个块之外的所有模板。

from flask import Flask, render_template
app = Flask(__name__)

@app.route('/')
def daddy():
    return render_template('son.html')

威望

那你怎么吃蛋糕然后吃呢?在这种情况下,在呈现时将son.htmldaughter.html都包含在daddy_template.html中?

1 个答案:

答案 0 :(得分:3)

查看include statement而不是使用块。