すべてのテンプレートで共通の変数を使用したいと考えています。Djangoでテンプレートにグローバル変数を使用できるようにする
class GetNameMiddleware(object):
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
response = self.get_response(request)
return response
def process_template_response(self, request, response):
response.context_data['name'] = 'dave'
return response
と、このようなビューがあります:私はすべての朝、私はそれがこのようなミドルウェアを持つことですやって見つけることができる唯一の方法はこれに取り組んできました、その後
from django.template.response import TemplateResponse
from django.shortcuts import render
def home(request):
return TemplateResponse(request, 'home.html', {})
をし、Iそれはちょうど私がrender
を使用できないことを少し醜いようだ
Hello {{ name }}
テンプレートにアクセスすることができ、それ以上(私はfrom django.template.response import TemplateResponse as render
を行うことができます知っているが、それは本当にありません溶液)
(ジャンゴ1.10、パイソン3.5.2)
_why_について何か追加してもらえますか?なぜなら、通常は別の方法で解決されると思うからです。 – RemcoGerlich
はい。私は英国の外にいる人々のためにサイト全体にメッセージを表示したい。メッセージには次のような共通データが必要です:{%if country_code!= 'UK'%} ... {%endif%} ' – Sevenearths
私は[giorgosp](http://stackoverflow.com/users/2924320/giorgosp)に同意します[カスタムコンテキストプロバイダ](https://docs.djangoproject.com/en/1.10/ref/templates/api/#writing-your-own-context-processors)を参照してください。ここには[役に立つブログ記事](http://www.b-list.org/weblog/2006/jun/14/django-tips-template-context-processors/)があります。その投稿は日付が記されていますが、コンテキストプロバイダの機能性については契約は変わりません。 –