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之类的东西,这是一个很好的建议。谢谢