Domanda

Django include un elenco di middleware integrato , ma se si desidera utilizzarli tutti (o la maggior parte), deve lavorare su tonnellate di documenti per ottenere l'ordinamento corretto nel file settings.py.

Esiste un ordine predefinito ottimale di tutte classi middleware Django 1.1 integrate? Ad esempio, qualcosa da copiare e incollare in settings.py:

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

Risposta alternativa: ci sono più ordini possibili e quale sarebbe la differenza?

A proposito: l'ordine è significativo, ma sono a conoscenza solo di alcune dipendenze predefinite, come SessionMiddleware prima di AuthenticationMiddleware.

È stato utile?

Soluzione

Hanno un elenco predefinito per il middleware Django di base:

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

Eventuali altri che crei o ottieni da terze parti possono essere aggiunti alla fine della tupla sopra. Il libro Django menziona anche che su una richiesta di visualizzazione, l'ordine va da CommonMiddleware a AuthenticationMiddleware e infine alla tua vista. In caso di risposta di ritorno, l'ordine viene invertito da AuthenticationMiddleware a CommonMiddleware . Ecco il doc per questo.

In risposta al commento:

Dopo aver cercato i biglietti per Django, sembra che questo sia stato un problema noto con la comunità di sviluppatori di Django e non credo che ci sia ancora una risposta definitiva. Ecco il ticket che contiene la discussione insieme alla parte in cui Jacob l'ha chiuso. Potresti provare a riproporre questo problema come biglietto Django per ottenere una risposta ufficiale allo sviluppo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top