0

ファイルがテンプレートに複数回含まれないようにすることはできますか?

ここにいくつかの(壊れた)サンプルコードがあります:

# 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 を 2 回含めています (おっと)。私は、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 を複数回インクルードすると一部のスクリプトが破損するため、面倒になる可能性があります。

4

1 に答える 1

2

私はかつてそれを次のように解決しました:

base.html:

{% set media_files = [] %}

サブテンプレート:

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

最近では、RequireJS、HeadJS、YepNope などを使用することをお勧めします。

于 2013-10-01T19:03:56.190 に答える