0

私は口述に文脈を持っています:

### settings.py. ###
CONTEXT = {'a':'b'}

そして、そのコンテキスト t1.html と t2.html を使用する 2 つのテンプレート:

### t1.html ###
{{ a }}

### t2.html ###
{{ a }}

両方とも、次のように他の多くのテンプレート内に含めることを意図しています。

### includer.html ###
{{ include 't1.html' }}

CONTEXT を t1.html と t2.html のみに渡すにはどうすればよいですか。

  1. includer.html テンプレートを含む他のテンプレートのコンテキストを汚染することなく
  2. 自動的に、つまり、t1.html および t2.html テンプレートが使用されるたびに、次のようにビューのコンテキストに手動で settings.CONTEXT を追加する必要はありません。

    ### views.py ###
    import settings
    from django.shortcuts import render
    
    def view1(request):
        return render(
            request,
            'includer.html',
            dict( {'c':'d'}.items() + settings.CONTEXT.items())
        )
    

可能な解決策:

  • コンテキストを含めるためにテンプレートに直接記述できる include ステートメントがありますか?
  • これを行うコンテキストプロセッサを取得する方法は?
4

2 に答える 2

2

テンプレートの依存関係の一部を隠すため、これを行うのは悪いことです。

しかし、CBVを使用すると、t1.html と t2.html が使用されている場合に、ベース ビュー クラスを作成し、それを継承できます。これは自動ではありませんが、余分なコンテキストを暗黙的にします。

CBV がなければ、現在のコンテキストに settings.CONTEXT を暗黙的に追加する必要があります。

于 2012-11-20T03:56:57.840 に答える
1

inclusion tagタグで簡単に目的のコンテキストを設定またはインポートできる場所を使用したいようです。

于 2012-11-19T20:57:26.557 に答える