Python 在jinja2模板中仅包含一次文件

Python 在jinja2模板中仅包含一次文件,python,jinja2,Python,Jinja2,我可以防止一个文件在模板中包含多次吗 以下是一些(不完整的)示例代码: # test.py import jinja2 ENV = jinja2.Environment(loader=jinja2.FileSystemLoader('.')) template = ENV.get_template('template.html') print template.render({}) 模板如下所示: {% include 'includejquery.html' %} {% include

我可以防止一个文件在模板中包含多次吗

以下是一些(不完整的)示例代码:

# test.py
import jinja2

ENV = jinja2.Environment(loader=jinja2.FileSystemLoader('.'))

template = ENV.get_template('template.html')
print template.render({})
模板如下所示:

{% include 'includejquery.html' %}
{% include 'includejquery.html' %}
正如您所看到的,我已经包含了两次jquery(oops)。我希望我能做一些与C预处理器类似的事情:

{% if _JQUERY is defined %}
{% else %}
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
{% set _JQUERY = 1 %}
{% endif %}
{%if\u JQUERY已定义%}
{%else%}
{%set\u JQUERY=1%}
{%endif%}
但这似乎不起作用。这里有干净的溶液吗


我这样做的原因是因为我有多个组件——每个组件都有自己的包含文件,包含使用该组件所需的所有内容,这将是一件好事。目前,我正在将JQuery从包含文件中分解出来,但随着依赖关系的增长,这可能会变得单调乏味,多次包含JQuery会导致一些脚本中断。

我曾经解决过类似这样的问题:

{% include 'includejquery.html' %}
{% include 'includejquery.html' %}
base.html:

{% set media_files = [] %}
子模板:

{% extends 'base.html' %}
{{ media_files.append('jquery.js') }}

这些天,我会推荐使用像RequireJS、HeadJS或YepNope之类的东西,这是一个很好的建议。谢谢