私は、1つを除いて、すべてのページに存在したいhtmlの部分を持っています。このページではない場合、私はそれをbase.html
に入れて拡張しました。djangoテンプレート拡張 - すべて1つのテンプレート
コードを個別にすべての必要なページに入れる以外の方法はありますか?
私は、1つを除いて、すべてのページに存在したいhtmlの部分を持っています。このページではない場合、私はそれをbase.html
に入れて拡張しました。djangoテンプレート拡張 - すべて1つのテンプレート
コードを個別にすべての必要なページに入れる以外の方法はありますか?
無視するために何も指定しないでオーバーライドするブロックに入れることができます。たとえば:
base.html
含ま-page.htmlを{% block content %}
<div>
This should show on all pages except for this one
</div>
{% endblock content %}
(div要素は、このページに含まれます)
{% extends 'base.html' %}
は無視-page.htmlを(このページではdivは無視されます)
{% extends 'base.html' %}
{% block content %}
{% endblock content %}
テンプレート継承docs、
からテンプレートエンジンは{%ブロック%} base.htmlでタグに気づくであろうし、子テンプレートの内容とそれらのブロックを置き換えます。
しかし
子テンプレートは、ブロックを定義していない場合は、 親テンプレートの値が代わりに使用されます。 親テンプレート内の{%block%}タグ内のコンテンツは常にフォールバックとして使用されます。
したがって、{%block%}タグをbase.htmlに使用できます。
{% block content %}
<!-- Your content here-->
{% endblock %}
あなたは親の{%block%}として、すべてのテンプレートにそのブロックを定義する必要はありませんは、フォールバックとして使用されています。
{% extends 'base.html' %}
だからあなたの例外的な場合には、単にデータがないか、何か他のものとのこと{%ブロック%}タグを定義します。
{% extends 'base.html' %}
{% block content %}
<!-- Nothing goes here -->
{% endblock content %}