14

django sekizai アプリを実装しようとしています。私が追加しているjsファイルを複製しています。

基本テンプレート:

{% load sekizai_tags %}
...
{% render_block "my_js" %}

このベースを使用しているテンプレート:

{% load sekizai_tags %}
<div id="a1" >
    {% addtoblock "my_js" %}
        <script type="text/javascript" src="{{ MEDIA_URL }}js/my_js.js"></script>
    {% endaddtoblock %}
</div>
{% addtoblock "my_js" %}
    <script type="text/javascript" src="{{ MEDIA_URL }}js/my_js.js"></script>
{% endaddtoblock %}

ここで、レンダリングされたテンプレートが 2 回レンダリングされました。しかし、div 内に同じスクリプトを追加しようとすると、複製されませんでした。誰かがこれに光を当てることができれば幸いです!

また、テンプレート タグによってレンダリングされたテンプレートで {% addtoblock %} を使用しようとすると、スクリプトが失われます (そのテンプレートには含まれず、残りません)。

注: テンプレート タグrender_blockaddtoblockは、django-sekizaiパッケージからのものです。

4

2 に答える 2

29

{% addtoblock %}{% endaddtoblock %}別のテンプレートを継承するテンプレートのブロック内にある必要があります。

# base.html
<html>
    ...
    {% render_block 'js' %}
    {% block js %}{% endblock %}
</html>


# some-page.html
{% inherits 'base.html' %}

{% block js %}
    {% addtoblock 'js' %}
        <script type="text/javascript" ... />
    {% endaddtoblock %}
{% endblock %}

それがあなたを助けることを願っています。

于 2012-03-21T19:00:17.840 に答える