45 lines
1.5 KiB
Plaintext
45 lines
1.5 KiB
Plaintext
|
== _Context Processors_
|
||
|
|
||
|
Mise en pratique: un _context processor_ sert _grosso-modo_ à peupler l'ensemble des données transmises des vues aux templates avec des données communes.
|
||
|
Un context processor est un peu l'équivalent d'un middleware, mais entre les données et les templates, là où le middleware va s'occuper des données relatives aux réponses et requêtes elles-mêmes.
|
||
|
|
||
|
[source,python]
|
||
|
----
|
||
|
# core/context_processors.py
|
||
|
|
||
|
import subprocess
|
||
|
|
||
|
def git_describe(request) -> str:
|
||
|
return {
|
||
|
"git_describe": subprocess.check_output(
|
||
|
["git", "describe", "--always"]
|
||
|
).strip(),
|
||
|
"git_date": subprocess.check_output(
|
||
|
["git", "show", "-s", r"--format=%cd", r"--date=format:%d-%m-%Y"]
|
||
|
),
|
||
|
}
|
||
|
|
||
|
----
|
||
|
|
||
|
Ceci aura pour effet d'ajouter les deux variables `git_describe` et `git_date` dans tous les contextes de tous les templates de l'application.
|
||
|
|
||
|
[source,python,highlight=12]
|
||
|
----
|
||
|
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',
|
||
|
"core.context_processors.git_describe"
|
||
|
],
|
||
|
},
|
||
|
},
|
||
|
]
|
||
|
----
|