4

次のようなテンプレートがあります:{% extends "main/main-template.html" %} まったく同じ内容のテンプレートも必要ですが、代わりに{% extends "main/main-template-quick.html" %}、テンプレートを変更できるように、同じコードをコピーして新しいファイルに貼り付けるのは DRY 違反のようです。スーパーテンプレートを動的に選択する方法はありますか?

そうでない場合、次のことを行う良い方法はありますか? 同じもの{% block %}とそのコンテンツを別のテンプレートで再利用します。同時に、DRYに違反していません。

また、これを実行できる可能性のある他のテンプレート言語にもオープンです。

4

2 に答える 2

6

ドキュメントを確認するextends、変数も受け入れることがわかります。

{% extends variable %} は variable の値を使用します。変数が文字列に評価される場合、Django はその文字列を親テンプレートの名前として使用します。

そのため、ビューで適切なベース テンプレートを簡単に判断して、それをテンプレートに渡すことができます。

includeそして、タグとは異なるコンテキストで html のチャンクを再利用したい場合は、あなたの友達です。

于 2013-07-16T16:47:11.530 に答える
2

Django では、 を使用して親テンプレート ブロックのコンテンツを表示できます{{ block.super}}

これにより、親のブロック コンテンツを挿入できます。

{% block content %}
  {{ block.super }}
{% endblock content %}

block.superあなたができるように設計されました

同じ {% block %} とそのコンテンツを別のテンプレートで再利用します。

于 2013-07-16T16:49:03.180 に答える