djangoテンプレートブロックの使用をテストするにはどうすればよいですか?
-
03-07-2019 - |
質問
次のことを行いたい:
{% if appnav %}
<hr />
<div id="appnav">
<ul class="tabs">
{% block appnav %}{% endblock %}
</ul>
</div>
{% endif %}
...ただし、継承チェーンのさらに下のテンプレートによるブロックの現在の使用のテストは機能しないようです。
これを行う可能性のある他の条件はありますか?
解決
テンプレート言語は、探しているものを正確に提供しません。子テンプレートは {{block.super}}
で親ブロックを呼び出すことができますが、親テンプレートは子テンプレートを参照できません。
おそらく、カスタムテンプレートタグを記述することをお勧めします。テンプレートマニュアルには、確認するセクションが2つあります。
まず、別のブロックタグまで解析する。これにより、解析方法の基本がわかります。
第二に、別のブロックタグまで解析し、コンテンツを保存します。カスタムタグ内にブロックタグを配置すると、コンテンツを検出し、必要に応じてラップできます。内側のブロックタグが最初に解析されると思うので、これは動作するはずです。それでもうまくいかない場合は、djangoが提供する既存のブロックテンプレートタグをサブクラス化して、特別な魔法を実装します。
所属していません StackOverflow