Sommaire

Principes de fonctionnement

On peut utiliser Django sans avoir installé aucun middleware, bien qu’il soit fortement suggéré d’utiliser au moins le middleware CommonMiddleware.

Comme certains middlewares peuvent dépendre les uns des autres, l’ordre dans lequel ils sont positionnés dans MIDDLEWARE_CLASSES est important, car il va conditionner l’ordre dans lequel les middlewares vont être exécutés.

Par exemple, le middleware d’authentification des utilisateurs AuthenticationMiddleware s’appuie sur une gestion des sessions, il a donc besoin que les sessions existent et soient gérées avant d’être exécuté. Il ne peut donc travailler qu’une fois le travail du middleware SessionMiddleware effectué, c’est pourquoi il est positionné après le middleware SessionMiddleware dans la liste.

Le principe d’être exécuté ″avant″ est valable pour le traitement des requêtes. Lorsque l’on traitera les réponses aux requêtes, l’ordre sera inversé, les premiers seront les derniers et réciproquement. À l’aller on empile, au retour on dépile ; voir le schéma explicatif.

1. Ordre précis d’exécution des méthodes des middlewares

Un middleware est une classe Python, ordinaire, sans méthode __init__(). Cette classe Python doit implémenter les cinq méthodes ci-dessous. L’ordre ...