CapedHero
10/11/2017 - 10:37 PM

Add Custom Context Processors

How to add custom context processors to make some data available in all Django templates?

Zakładamy plik my_context_procesors.py w katalogu którejś aplikacji np. myapp. W tym pliku definiujemy funkcję new_context_processor() (czyli nasz nowy context procesor), która będzie zwracała słownik: def new_context_processor(request): ctx = { "now": datetime.now(), "version": "1.0", } return ctx Aby procesor kontekstu był widoczny w aplikacji, musimy zarejestrować go w pliku settings.py. W tym celu musimy odnaleźć wpis TEMPLATES, w którym definiujemy dane szablonów. Odnajdujemy klucz OPTIONS, po czym do listy o kluczu context_processors dopisujemy ścieżkę dostępu do funkcji np. myapp.new_context_processor.my_cp. TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', 'myapp.my_context_processors.my_cp', ], }, }, ]