2022-04-26 22:26:00 +02:00
\chapter { Context Processors}
Mise en pratique: un \emph { context processor} sert \emph { 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.
\begin { minted} { 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"]
),
}
\end { minted}
2022-04-30 19:05:06 +02:00
Ceci aura pour effet d'ajouter les deux variables \texttt { git\_ describe} et \texttt { git\_ date} dans tous les contextes de tous les templates de l'application.
2022-04-26 22:26:00 +02:00
\begin { minted} { python}
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"
],
} ,
} ,
]
\end { minted}