1

テンプレートでは、テンプレートタグの戻り値を使用してサブテンプレートの親テンプレートを決定したいと思います。

これはテンプレートタグです。アプリのラベル(パッケージ名)を返し、拡張する対応するテンプレート名を追加します。

{% app_label request.path %}

今私がしたいのはこれです:

{% extends app_label %}

これは可能ですか?

4

2 に答える 2

1

それは可能ではありません。{% extends %}タグは、テンプレート(ソース)の最初のテンプレートタグである必要があります。

テンプレートで使用する場合は{% extends %}、そのテンプレートの最初のテンプレートタグである必要があります。そうしないと、テンプレートの継承は機能しません。

つまり、テンプレートの名前で変数を作成するために、その前に別のテンプレートタグを置くことはできません。

ただし、ビューでテンプレートタグ関数を呼び出して(おそらくリファクタリング後に)、変数をテンプレートコンテキストに追加することができます。{% extends ... %}これは、タグで使用できる通常の変数です。

于 2012-06-27T17:51:57.147 に答える
1

私はコンテキストプロセッサで問題を解決しました:

def app_label_processor(request):
    return {
        'app_base_template': resolve(request.path).app_name
    }

それから私はこれを使うことができます:

{% extends app_base_template %}

あなたがする必要があるのは

  • この回答で説明されているようにアプリのURLを追加する
  • コンテキストプロセッサをsettings.TEMPLATE_CONTEXT_PROCESSORSに追加します
  • RequestContextテンプレートのレンダリングに使用します。
于 2012-06-28T06:03:32.230 に答える