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',
],
},
},
]