如何在jinja2中连接多个块?
我在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 %}