在jinja2中连接多个块?

时间:2010-06-27 13:36:58

标签: python templates jinja2

我在python中使用jinja2作为我的模板引擎。

我想加入多个块的内容,并希望在模板的末尾呈现它,就在标记之前。 {他们是多个模板中的代码中的各种JavaScript代码段,我想移到文件的末尾,我该怎么做? }

编辑:

我想移动在子jinja模板中创建的所有内联javascript。我想将它们移到页面底部。所以我在页面末尾的父模板中创建了一个块,并在子模板中使用它来编写javascript。但是,可能有多个子,因此多个javascript块,并且在jinja2中不支持多个块,我有什么其他解决方案? --------我认为一个替代方案是以不需要内联的方式创建javascript本身。

1 个答案:

答案 0 :(得分:19)

我认为,对于多个孩子,你的意思是有继承自模板的模板继承的模板......继承自基础模板。如果是这种情况,您需要在每个模板中定义相同的javascript块,并在所有子项中调用super(),此外还要添加更多JavaScript。调用super()打印父级javascript块的输出,依此类推继承链。在此过程中,每个块都可以添加自己的代码。

所以你可以在每个模板中都有这样的东西:

{% block javascript %}
    {{ super() }}

    function foo(x, y) {
        return x + y;
    }
{% endblock %}