Intermédiaire
🧠 Fondamentaux
20 XP
0 personnes ont réussi
Premier middleware Django
Dans Django, un middleware est une classe qui se place entre la requête entrante et la vue qui va la traiter. Chaque requête HTTP passe par tous les middlewares, dans l'ordre, avant d'atteindre la vue. Et la réponse repasse par les memes middlewares, en sens inverse.
C'est comme une série de filtres dans un système de purification d'eau : l'eau passe par chaque filtre en entrant, et peut repasser par d'autres en sortant.
Django fournit une classe MiddlewareMixin qui facilite l'écriture de middlewares. Tu dois definir une classe avec deux méthodes optionnelles :
process_request(self, request) : appelee avant la vue process_response(self, request, response) : appelee apres la vue
Si process_request retourne None, la requête continue son chemin. Si elle retourne une HttpResponse, la requête est court-circuitee (la vue n'est jamais appelee).
Voici un exemple de middleware qui ajoute un attribut a la requête :
from django.utils.deprecation import MiddlewareMixin
class MonMiddleware(MiddlewareMixin): def process_request(self, request): request.mon_attribut = 'bonjour' return None
Écris un middleware AddRequestIdMiddleware qui : - Dans process_request, ajoute un attribut request_id a la requête avec la valeur 'REQ-001' - Dans process_response, ajoute un header 'X-Request-Id' a la réponse avec la meme valeur 'REQ-001' - process_request retourne None (la requête continue) - process_response retourne la réponse modifiee