2 つの異なるベース ファイル内に同じコンテンツを提供したいと思います。
そこで、私は次のことをやろうとしています:
ページ1.html:
{% extends "base1.html" %}
{% include "commondata.html" %}
ページ2.html:
{% extends "base2.html" %}
{% include "commondata.html" %}
問題は、extends と include の両方を使用できないことです。それを実現する方法はありますか? ない場合は、上記を実現するにはどうすればよいですか?
commondata.html
base1.html
との両方で指定されたブロックを上書きしますbase2.html
この目的は、書式がわずかに異なる両方pdf
のhtml
形式で同じページを提供することです。ただし、上記の質問は私がやろうとしていることを簡素化しているので、その答えが得られれば問題は解決します。
ベストアンサー1
extends テンプレート タグを使用すると、現在のテンプレートが別のテンプレートを拡張し、親テンプレートに依存する子テンプレートになることを意味します。Django は子テンプレートを参照し、そのコンテンツを使用して親テンプレートを設定します。
子テンプレートで使用するものはすべてブロック内に記述する必要があります。Django はブロックを使用して親テンプレートにデータを入力します。子テンプレートで include ステートメントを使用する場合は、Django が理解できるようにブロック内に記述する必要があります。そうしないと、意味がわからなくなり、Django はそれをどう処理すればよいかわかりません。
Django のドキュメントには、ブロックを使用して親テンプレート内のブロックを置き換える非常に優れた例がいくつかあります。
https://docs.djangoproject.com/en/dev/ref/templates/language/#テンプレート継承