web-dev-qa-db-ja.com

{%include%} vs {%extends%} in Django templates

テンプレートを特に拡張する場合、および使用する場合は?ユーザープロファイルセクション(私たちのサイトの隅にある私についてのような)のようなコンテンツでの使用は含まれていますか?

30
sasquatch

拡張すると、ページを構築するためのパーツ(「ヘッダー」や「フッター」など)を含める代わりに、親テンプレートのブロック(「コンテンツ」など)を置き換えることができます。これにより、完全なレイアウトを含む単一のテンプレートを作成でき、ブロックを置き換えることで他のテンプレートのコンテンツのみを「挿入」できます。

ユーザープロファイルがすべてのページで使用されている場合は、他のユーザーによって拡張されたベーステンプレートに配置するか、ベーステンプレートに含めることをお勧めします。非常に少数のページでのみユーザープロファイルが必要な場合は、それらのテンプレートに含めることもできます。ユーザープロファイルがいくつかのページを除いて同じである場合は、ブロック内のベーステンプレートに配置し、別のプロファイルが必要なテンプレートに置き換えることができます。

52
ThiefMaster

Django template inheretance について参照してください。

親テンプレートの一種の「インクルード」を拡張し、さまざまな機能のためにその一部を上書きできます。

インクルードは、現在のコンテキストでテンプレートをレンダリングする単純なインクルードを行います。

3
Unreason

extendsは「親子関係」を作成します。拡張の場合、親機能が上書きされる可能性があります。 includeは、単にhtml応答をレンダリングします。