python / intermediate
Snippet
Django Eigene Kontext Prozessoren
Kontext-Prozessoren injizieren Variablen automatisch in jeden Template-Kontext und eliminieren wiederholte Template-Injection. Sie empfangen das HttpRequest-Objekt und geben ein Dictionary zurück, das mit allen Template-Kontexten zusammengeführt wird. Häufige Anwendungsfälle sind das Hinzufügen von Navigationszustand, Injizieren von Analytics-Daten oder das Verfügbar machen von Einstellungen site-weit. Sie werden bei jedem Render ausgeführt, also halte sie leichtgewichtig.
snippet.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# project/context_processors.pyfrom datetime import datetimedef template_variables(request):return {'current_year': datetime.now().year,'debug_mode': settings.DEBUG,'request_path': request.path,}# settings.pyTEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','OPTIONS': {'context_processors': ['django.template.context_processors.debug','django.template.context_processors.request','project.context_processors.template_variables',],},},]
django
Erklärung
1
def template_variables(request):
Funktion empfängt Request-Objekt, gibt Dict zurück das mit Template-Kontext zusammengeführt wird
2
'project.context_processors.template_variables'
Punktierter String in settings aktiviert diesen Prozessor global
3
'django.template.context_processors.request'
Eingebauter Prozessor macht Request in Templates verfügbar
4
'debug_mode': settings.DEBUG
Templates können bedingt Debug-Informationen basierend darauf anzeigen/verbergen