-1
10のテンプレートをレンダリングする10のジャンゴルートがあります。これらの10個のテンプレートは、同じレイアウト(拡張)を使用します。これらの10のルートに対して同じコンテキストパラメータを送信したいと思います。 view.pyにコードを複製せずにこれらのパラメータを設定する方法はありますか? おかげ一般的なdjangoテンプレートのパラメータ
10のテンプレートをレンダリングする10のジャンゴルートがあります。これらの10個のテンプレートは、同じレイアウト(拡張)を使用します。これらの10のルートに対して同じコンテキストパラメータを送信したいと思います。 view.pyにコードを複製せずにこれらのパラメータを設定する方法はありますか? おかげ一般的なdjangoテンプレートのパラメータ
「おそらく仕事ができる最も簡単な解決策」:
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のセットを書くことかもしれません。
はい:[コンテキストプロセッサ](https://docs.djangoproject.com/en/1.10/ref/templates/api/#playing-with-context-objects)。 –
はい、これは分かりますが、このコンテキストオブジェクトを作成してrender()の最後のパラメータでこの関数を呼び出す共通の関数をview.pyで作成する必要があると思いますか? – Bob5421
まあ、何?コンテキストプロセッサはすでにソリューションであり、自動的に呼び出されます。なぜ手動で何かを呼びたいのですか? –