djangoテンプレートブロックの使用をテストするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/600806

  •  03-07-2019
  •  | 
  •  

質問

次のことを行いたい:

{% if appnav %}
<hr />
<div id="appnav">
    <ul class="tabs">
        {% block appnav %}{% endblock %}
    </ul>
</div>
{% endif %}

...ただし、継承チェーンのさらに下のテンプレートによるブロックの現在の使用のテストは機能しないようです。

これを行う可能性のある他の条件はありますか?

役に立ちましたか?

解決

テンプレート言語は、探しているものを正確に提供しません。子テンプレートは {{block.super}} で親ブロックを呼び出すことができますが、親テンプレートは子テンプレートを参照できません。

おそらく、カスタムテンプレートタグを記述することをお勧めします。テンプレートマニュアルには、確認するセクションが2つあります。

まず、別のブロックタグまで解析する。これにより、解析方法の基本がわかります。

第二に、別のブロックタグまで解析し、コンテンツを保存します。カスタムタグ内にブロックタグを配置すると、コンテンツを検出し、必要に応じてラップできます。内側のブロックタグが最初に解析されると思うので、これは動作するはずです。それでもうまくいかない場合は、djangoが提供する既存のブロックテンプレートタグをサブクラス化して、特別な魔法を実装します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top