如何在jinja2中连接多个块?

13 投票
1 回答
4260 浏览
提问于 2025-04-16 00:29

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

我想把多个代码块的内容合并起来,并希望在模板的最后部分渲染这些内容,也就是在

标签之前。{ 代码中有很多JavaScript片段分散在多个模板里,我想把它们都移动到文件的底部,我该怎么做呢? }

补充说明:

我想把所有在子jinja模板中创建的内联JavaScript移动到页面的底部。所以我在父模板的页面底部创建了一个代码块,并在子模板中使用它来写JavaScript。但是,可能会有多个子模板,也就会有多个JavaScript代码块,而jinja2不支持多个代码块,那我还有什么其他解决办法呢?-------- 我想到的一个替代方案是创建JavaScript的方式,使它不需要内联。

1 个回答

22

我想你说的多个子模板,是指有一些模板是从其他模板继承而来的,层层往上继承到一个基础模板。如果是这样的话,你需要在每个模板里定义相同的 javascript 代码块,并且在所有的子模板中调用 super(),同时还要添加更多的JavaScript代码。调用 super() 会输出父模板的 javascript 代码块的内容,然后再往上继承的模板也会依次输出。每个代码块在这个过程中也可以添加自己的代码。

所以在每个模板里你可以有这样的内容:

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

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

撰写回答