Intermédiaire
🧠 Fondamentaux
20 XP
0 personnes ont réussi
Middleware de logging Django
Maintenant qu'on sait écrire un middleware basique, on va en faire un qui garde un historique. En vrai projet, on utiliserait le module logging de Python, mais ici on va stocker les logs dans une liste pour pouvoir les tester facilement.
L'astuce, c'est que le middleware est instancie une seule fois au demarrage de Django, puis il traite toutes les requêtes. Donc si tu stockes des données dans self, elles persistent entre les requêtes. C'est parfait pour un historique.
Quand on ecrit un middleware Django manuellement (sans MiddlewareMixin), on utilise le pattern "new style" :
class MonMiddleware: def __init__(self, get_response): self.get_response = get_response
def __call__(self, request): # Code avant la vue response = self.get_response(request) # Code apres la vue return response
get_response est la vue suivante (ou le middleware suivant dans la chaine). En appelant self.get_response(request), tu laisses la requête continuer son chemin et tu recuperes la réponse.
Écris un middleware LoggingMiddleware (style new) qui : - Dans __init__, stocke get_response et initialise self.logs comme une liste vide - Dans __call__, ajoute dans self.logs une chaine de la forme "GET /chemin" (request.method et request.path), puis appelle get_response et retourne la réponse