From 39f05bd5c3b8538f123761e656e985bed23f41cd Mon Sep 17 00:00:00 2001 From: Fred Pauchet Date: Sun, 1 May 2022 19:15:52 +0200 Subject: [PATCH] Easter notes for context processors --- chapters/contexts-processors.tex | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/chapters/contexts-processors.tex b/chapters/contexts-processors.tex index c86ed25..928c05f 100644 --- a/chapters/contexts-processors.tex +++ b/chapters/contexts-processors.tex @@ -1,26 +1,22 @@ \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. +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 est situé 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 + # core/context_processors.py -import subprocess + 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"] - ), - } + 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} @@ -44,3 +40,6 @@ Ceci aura pour effet d'ajouter les deux variables \texttt{git\_describe} et \tex }, ] \end{minted} + +Les context processors sont extrêmement utiles pour injecter des données dans chacune des vues. +Il peut cependant être utile d'utiliser un mécanisme de cache pour gagner du temps de traitement, surtout lorsque des appels en base de données doivent être réalisés: ceci évite que ces appels ne soient réalisés trop souvent, alors qu'ils n'évoluent peut-être pas aussi vite.