Django テンプレートの "{% extends %}" と "{% include %}" 質問する

Django テンプレートの

2 つの異なるベース ファイル内に同じコンテンツを提供したいと思います。

そこで、私は次のことをやろうとしています:

ページ1.html:

{% extends "base1.html" %}
{% include "commondata.html" %}

ページ2.html:

{% extends "base2.html" %} 
{% include "commondata.html" %}

問題は、extends と include の両方を使用できないことです。それを実現する方法はありますか? ない場合は、上記を実現するにはどうすればよいですか?

commondata.htmlbase1.htmlとの両方で指定されたブロックを上書きしますbase2.html

この目的は、書式がわずかに異なる両方pdfhtml形式で同じページを提供することです。ただし、上記の質問は私がやろうとしていることを簡素化しているので、その答えが得られれば問題は解決します。

ベストアンサー1

extends テンプレート タグを使用すると、現在のテンプレートが別のテンプレートを拡張し、親テンプレートに依存する子テンプレートになることを意味します。Django は子テンプレートを参照し、そのコンテンツを使用して親テンプレートを設定します。

子テンプレートで使用するものはすべてブロック内に記述する必要があります。Django はブロックを使用して親テンプレートにデータを入力します。子テンプレートで include ステートメントを使用する場合は、Django が理解できるようにブロック内に記述する必要があります。そうしないと、意味がわからなくなり、Django はそれをどう処理すればよいかわかりません。

Django のドキュメントには、ブロックを使用して親テンプレート内のブロックを置き換える非常に優れた例がいくつかあります。

https://docs.djangoproject.com/en/dev/ref/templates/language/#テンプレート継承

おすすめ記事