13

Python のテンプレート エンジンに jinja2 を使用しています。

複数のブロックのコンテンツを結合し、テンプレートの最後、タグの直前にレンダリングしたいと考えています。{ これらは複数のテンプレートのコード全体のさまざまな JavaScript スニペットであり、ファイルの最後に移動したいのですが、どうすればよいですか? }

編集 :

子 jinja テンプレートで作成されたすべてのインライン JavaScript を移動したいと思います。それらをページの一番下に移動したいと思います。そのため、ページの最後にある親テンプレートにブロックを作成し、それを子テンプレートで使用して JavaScript を記述しました。しかし、複数の子が存在する可能性があるため、複数のjavascriptブロックがあり、複数のブロックはjinja2でサポートされていないため、他の解決策は何ですか? --------私が考える1つの代替案は、インラインである必要がないような方法でjavascript自体を作成することです。

4

1 に答える 1

22

複数の子とは、テンプレートから継承するテンプレートから継承するテンプレートがあることを意味すると思います...基本テンプレートから継承します。その場合は、JavaScript を追加するだけでなく、javascript各テンプレートで同じブロックを定義し、すべての子を呼び出す必要があります。super()を呼び出すsuper()と、親のブロックの出力が出力javascriptされ、継承のチェーンが続きます。途中で、各ブロックに独自のコードが追加される場合があります。

したがって、各テンプレートに次のようなものを含めることができます。

{% block javascript %}
    {{ super() }}

    function foo(x, y) {
        return x + y;
    }
{% endblock %}
于 2010-06-30T05:01:11.993 に答える