2009-11-30 4 views
4

Django est livré avec un list of built-in middleware, mais si vous voulez en utiliser tous (ou la plupart), il doit travailler sur des tonnes de documents afin d'obtenir le bon tri dans les paramètres. fichier py.Liste par défaut du middleware intégré Django

Existe-t-il un ordre par défaut optimal de tous les classes de middleware intégrées de Django 1.1? À savoir, quelque chose à Copy'n'Paste dans settings.py:

MIDDLEWARE_CLASSES = (
    # perfect order here please ;-) 
) 

réponse alternative: Y at-il plusieurs ordres possibles et quelle serait la différence? A propos: La commande est significative, mais je ne connais que certaines dépendances par défaut, comme SessionMiddleware avant AuthenticationMiddleware.

+0

Cherchez-vous comment commander _all_ le middleware disponible en même temps (c'est-à-dire en utilisant tous les logiciels disponibles ensemble)? – thornomad

+0

Oui, en bref. Je pense que les développeurs de Django auraient une préférence, s'ils utilisaient leur propre middleware, et j'aimerais connaître cet ordre. – Boldewyn

+0

Voir aussi: http://stackoverflow.com/questions/4632323/how-to-perfectly-sort-django-middleware – kolypto

Répondre

9

Ils ont un default list pour le middleware Django de base:

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
) 

Tout autre ceux que vous créez ou obtenez de tiers peuvent être ajoutés à la fin du tuple ci-dessus. Le livre de Django mentionne également que sur une demande de vue, la commande est de CommonMiddleware à AuthenticationMiddleware et finalement à votre vue. Dans une réponse de retour, l'ordre est inversé de AuthenticationMiddleware à CommonMiddleware. Voici le doc pour cela. Dans

réponse au commentaire:

Après avoir écumé les billets de Django, il semble que cela a été une question de savoir avec la communauté dev Django et je ne pense pas qu'il y ait une réponse définitive à encore . Voici le ticket qui contient la discussion avec la partie où Jacob l'a fermé. Vous pouvez essayer de ramener ce problème en tant que ticket Django pour obtenir une réponse de développement officielle.

+1

oui, je sais, mais la liste manque django.middleware.gzip.GZipMiddleware, django.middleware. http.ConditionalGetMiddleware et ainsi de suite, qui sont * déjà inclus * dans Django par défaut. Ma question est, comment les middlewares * par défaut, intégrés * pourraient être arrangés. – Boldewyn

Questions connexes