2009-11-12 13 views

答えて

158
{% block javascript %} 
    {{ block.super }} 
    ... more content ... 
{% endblock %} 

項目:1を含むときにも、テンプレートを拡張ではなく、ときblock.superを使用してDjango documentation - Template inheritance

+0

ありがとう、ありがとう! :) – PKKid

4

が正常に動作します、すなわち:

{% extends "base.html" %} vs. {% include "partial.html" %} 

は、あなたが途中でテンプレートを含めたいと言いますあなたのページとあなたはまた、ページの末尾にあるブロックにいくつかのjavascriptを追加したいと思います:block.superを呼び出すと、クラッシュします。

Cf. Djangoは#7324#12008#13399およびrelated update to the documentationを発行します。 Cf。 include tag注:

ザ・タグは「このサブテンプレートをレンダリングし、HTMLが含まれる」、「このサブテンプレートを解析し、それは親の一部であるかのようにその内容を含まない」との実装として考慮されるべきであります。これは、インクルードされたテンプレート間で共有状態がないことを意味します。それぞれのインクルードは、完全に独立したレンダリングプロセスです。

ブロックが含まれる前に評価されます。つまり、別のブロックからのブロックを含むテンプレートには、すでに評価されレンダリングされたブロックが含まれます。たとえば、拡張テンプレートなどで上書きできるブロックではありません。 django-sekizai READMEから

{% load sekizai_tags %} 

           ⎧ <p>Some content</p> 
<p>Some content</p>    | {% addtoblock "js" %} 
           | <script type="text/javascript"> 
{% include "partial.html" %} -> ⎨  alert("Hello django-sekizai"); 
           | </script> 
<p>Some more content</p>  ⎩ {% endaddtoblock %} 


{% render_block "js" %} 

::私はウィッヒあなたがのようなものを行うことができ、django-sekizaiを使用することをお勧めしたいような場合には

私はこのプロジェクトを始めた主な理由は、不足しましたdjangoとdjango-cmsの良いメディア(css/js)フレームワークのはい、メディアクラスはdjangoのフォームで使用されていますが、実際にはうまくいきません。通常、フロントエンドの人は、CSSとJavaScriptファイルをインクルードすることを決めたいと思っています。Pythonファイルを変更してPythonファイルを変更しないようにする必要はありません。そのため、現在の場所の前後にあるテンプレートの内容を編集できるようにする必要がありました。また、私は重複を削除したかった。その結果、私はちゃんとdjango-sekizaiを書いた。ブロックに似ています。ブロックを継承するのではなく、継承します。

関連する問題