2012-04-04 14 views

risposta

14

I processori di contesto vengono utilizzati per fornire ai modelli dati aggiuntivi. Il middleware serve per intercettare gli oggetti richiesta/risposta e modificarli (o innescare altri comportamenti) in modo significativo.

1

Lavorano in diversi livelli di stack per diversi contesti. È normalmente difficile mantenere gli stack di un framework per essere assolutamente ortodossi, specialmente l'unica cosa che una struttura web come l'elaborazione di Django è richiesta e risposta. Sì, potremmo usare request.user, invece di context.user da context_processor durante il rendering del template. Ma potresti non volere attributi che sono usati solo nel modello, sono impostati su ogni richiesta.

Inoltre, il decoratore è flessibile rispetto al middleware per operazioni a livello di vista, ma il suo middleware difficile da dire è un decoratore-lite. Mi piacerebbe trattare i processori di contesto come tag del modello di assegnazione, ma caricati automaticamente, tra l'altro.

19

Il middleware funge da gancio per l'elaborazione della richiesta/risposta di Django a un livello basso ed è leggero. Gli hook sono disponibili per richiesta, risposta, vista, template_response ed elaborazione delle eccezioni. Potrebbe essere necessario modificare la richiesta prima che la vista la gestisca, potrebbe essere necessario registrare le informazioni sulla richiesta per scopi di debug, controllare un cookie per impostare il locale e così via.

Ulteriori informazioni Middleware.

I processori di contesto modificano semplicemente il contesto. Il contesto è una mappatura dei valori chiave con le variabili passate a un modello. Un processore di contesto accetta un oggetto di richiesta come argomento e restituisce un dizionario di elementi che vengono uniti nel contesto. Il contesto viene reso al tuo modello secondo la tua visualizzazione e allega qualsiasi altra cosa i tuoi processori di contesto si fondono. Puoi considerarlo come una variabile di contesto globale, disponibile per te in tutti i tuoi modelli.

Ulteriori informazioni Context Processors.

Entrambi sono abbastanza semplici da scrivere e hanno lo scopo. Ecco un diagramma che mostra dove middleware e contesto si inseriscono in un tipico flusso django:

enter image description here

Django diagramma di flusso

richiede
  1. utente una pagina

  2. Richiesta raggiunge Richiedi Middleware, che potrebbe manipolare o rispondere alla richiesta

  3. The URLConffinds the rela ted Visualizza utilizzando gli URL.py

  4. View Middleware sono chiamati, in grado di manipolare o rispondere alla richiesta di

  5. La funzione di visualizzazione viene richiamata

  6. La vista potrebbe facoltativamente i dati di accesso attraverso modelli

  7. Tutti i modelli-to -Le interazioni DB avvengono tramite un gestore

  8. Le viste possono utilizzare un contesto speciale se necessario

  9. Il contesto viene passato al modello per il rendering

Problemi correlati