2016-12-09 12 views
-1

10のテンプレートをレンダリングする10のジャンゴルートがあります。これらの10個のテンプレートは、同じレイアウト(拡張)を使用します。これらの10のルートに対して同じコンテキストパラメータを送信したいと思います。 view.pyにコードを複製せずにこれらのパラメータを設定する方法はありますか? おかげ一般的なdjangoテンプレートのパラメータ

+1

はい:[コンテキストプロセッサ](https://docs.djangoproject.com/en/1.10/ref/templates/api/#playing-with-context-objects)。 –

+0

はい、これは分かりますが、このコンテキストオブジェクトを作成してrender()の最後のパラメータでこの関数を呼び出す共通の関数をview.pyで作成する必要があると思いますか? – Bob5421

+1

まあ、何?コンテキストプロセッサはすでにソリューションであり、自動的に呼び出されます。なぜ手動で何かを呼びたいのですか? –

答えて

0

「おそらく仕事ができる最も簡単な解決策」:

def render_common(request, template, extra_context): 
    context = { 
     # set up you context here 
     } 
    context.update(extra_context) 
    return render(request, template, context) 


def viewone(request): 
    return render_common(request, "templateone.html", {"foo":"bar"}) 

別の解決策 - あなたの具体的なユースケースに応じて:

def render_common(request, template): 
    context = { 
     # set up you context here 
     } 
    return render(request, template, context) 


def viewone(request): 
    return render_common(request, "templateone.html") 

# etc 

それとも、追加パー・ビュー特定のコンテキストを持っている場合カスタムのtemplatetagsのセットを書くことかもしれません。

関連する問題