Mi sembra che tutto ciò che un context processor può fare, il middleware può fare. Allora, qual è il punto di processori di contesto? Sono solo middleware-lite?Processori di contesto vs middleware in django
risposta
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.
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.
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:
Django diagramma di flusso
richiedeutente una pagina
Richiesta raggiunge Richiedi Middleware, che potrebbe manipolare o rispondere alla richiesta
The URLConffinds the rela ted Visualizza utilizzando gli URL.py
View Middleware sono chiamati, in grado di manipolare o rispondere alla richiesta di
La funzione di visualizzazione viene richiamata
La vista potrebbe facoltativamente i dati di accesso attraverso modelli
Tutti i modelli-to -Le interazioni DB avvengono tramite un gestore
Le viste possono utilizzare un contesto speciale se necessario
Il contesto viene passato al modello per il rendering
- 1. Quando è opportuno utilizzare i processori di contesto Django?
- 2. middleware vs. processore contesto per vista dipendente navigazione/visualizzazione
- 3. Processori contesto personalizzati, unit test e factory richiesta
- 4. middleware non globale in Django
- 5. Django middleware e HttpRequest cambia
- 6. processore di contesto django
- 7. : wsgi-middleware vs before_ e after_request()
- 8. django middleware set variabile globale speciale utente
- 9. Differenza middleware django tra process_request e process_view
- 10. accesso al modello dal middleware - django
- 11. RESTEasy Mock vs. Exception Mapper vs. Contesto
- 12. MPI Numero di processori?
- 13. contesto in serializzatori nidificate Django resto quadro
- 14. Django-nonrel vs Django-mongodb vs Mongokit vs pymongo nativo
- 15. Django - Piattaforme di fatturazione degli utenti/middleware, ad esempio, tenere traccia delle spese e delle spese
- 16. Video in WebView - Contesto ApplicationContext vs Activity
- 17. Descrivere vs contesto in rspec. Differenze?
- 18. Symfony2 middleware
- 19. Test di pagine django con middleware per multihost
- 20. I file statici di django saltano il middleware?
- 21. selettore di contesto jquery vs .find()
- 22. Conditional Django Middleware (o come escludere il sistema di amministrazione)
- 23. MPI: modifica numero di processori in CMakelists
- 24. Esecuzione di codice Python in processori diversi
- 25. Numero di processori in Clojure? Java interop
- 26. Dov'è il processore di contesto dei template in Django 1.5?
- 27. creazione del mio processore di contesto in django
- 28. Definizione di costanti in Django
- 29. Filtro Django vs escludi
- 30. Django: timezone.now vs timezone.now()