Django でアプリケーションを開発していますが、Django テンプレート システムを使用して、テンプレートの継承を使用してブロックのオーバーライドを実現する方法がわかりません。
私はbase.html
テンプレートを持っています:
[...]
<body>
{% block content %}
{% endblock %}
</body>
[...]
index.html
JS スライダーを表示するテンプレートがあります (コンテンツはbody
タグに直接存在します)。
{% extends "base.html" %}
{% block content %}
// some javascript/css slider stuff here
{% endblock %}
また、いくつかの動的コンテンツ ページがあります: list.html
、form.html
など (それらのコンテンツはいくつかのdiv
コンテナーに存在する必要があります)。container.html
私はどういうわけか次のように定義します:
{% extends "base.html" %}
{% block content %}
<div class="container marketing">
<div class="container">
{% put overriden "content" block here %}
</div>
</div>
{% endblock %}
そして、次list.html
のように定義できます。
{% extends "container.html" %} # note what I'm extending here!
{% block content %}
this is my list
{% endblock %}
なんで?
基本テンプレートをできるだけ一般的なものに保ちたい (例: クライアント側のスライダーを有効にする -div
コンテナなし)。また、ほとんどの動的ページ (リスト、フォームなど) を同じ HTML コンテナー コードでラップしたいと考えています。このコードを繰り返したくないので、これは 1 つのテンプレート (リスト、フォームなどによって拡張されるテンプレート) で利用できる必要があります。
内部に別のブロックを定義できることはわかっています。しかし、おそらくより良い解決策がありますか?