1

テンプレートの継承を容易にするために、親の名前{%block%}を動的に決定したいと思います。

このために、2つの親テンプレートがあります。主なものはこんな感じ

# main parent
...
{% block details %}{% endblock %}
...

そしてもう1つ:

# other parent
...
{% block content %}{% endblock %}
...

このテンプレートは非常に頻繁に使用され、ブロックの名前を変更すると多くの作業が発生するmain_templateため、子テンプレートで使用するブロック名を示すブール値を使用して何かを試しました。

# child template
...
{% block main_template|yesno:'details,content' %}
...
{% endblock %}
...

これは動作しません。私が説明した動作を取得する他の方法はありますか?

4

1 に答える 1

1

いいえ、これは機能しません。toの引数{% block %}は値ではなくラベルであるため、そこでコンテキスト変数を使用することはできません。

これを回避する方法はいくつかあるかもしれませんが、それらは保守可能ではありません。正直なところ、異なるベーステンプレート間でブロック名を揃えるには、努力を払うほうがよいでしょう(これは実際には検索と置換の操作である必要があります)。

Djangoテンプレートの継承が機能する方法では、子テンプレートは親テンプレートのブロック構造に関する知識を持っている必要があります。複数の異なる親から継承できる子テンプレートがある場合、それらはすべて同じ構造である必要があります。

于 2012-09-13T15:36:06.913 に答える