我可以阻止文件在模板中多次包含吗?
这是一些(破碎的)示例代码:
# 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 %}
但这似乎不起作用。这里有干净的解决方案吗?
我这样做的原因是因为我有多个组件 - 每个组件都有自己的包含文件以及使用该组件所需的所有内容。目前我正在将JQuery从包含文件中分解出来,但随着依赖关系的增长,包括JQuery多次导致一些脚本中断,这可能会变得乏味。
答案 0 :(得分:2)
我曾经解决过这样的问题:
base.html文件:
{% set media_files = [] %}
sub_template:
{% extends 'base.html' %}
{{ media_files.append('jquery.js') }}
这些天我建议使用RequireJS,HeadJS或YepNope
之类的东西