Se circa la metà delle visualizzazioni richiede lo stesso set di dati, è opportuno utilizzare un processore di contesto per rendere i dati sempre disponibili oppure esiste un modo migliore per evitare di ripetere il codice per ottenere tali dati su più viste senza interrogare il dati se non saranno usati nella vista?Quando è opportuno utilizzare i processori di contesto Django?
risposta
Il RequestContext
inizializzazione verrà eseguito alcun processori contesto elencati nel file di impostazioni, ma prende anche un elenco di processori aggiuntivi da eseguire. Qualsiasi processore di contesto generale può essere inserito in settings.py e altri specifici possono essere aggiunti allo RequestContext
caso per caso.
Invia RequestContext
fuori tutto per non eseguire alcun processore di contesto.
# want context processors listed in settings.py as well as some more specific ones
return render_to_response('template.html', {'foo':'bar'}, context_instance=RequestContext(request, processors = extra_processors))
# want only context processors listed in settings.py
return render_to_response('template.html', {'foo':'bar'}, context_instance=RequestContext(request))
# no context processors
return render_to_response('template.html', {'foo':'bar'})
È possibile filtrare quali viste in realtà utilizzano processori di contesto da solo passando RequestContext(request)
solo a coloro che ne hanno bisogno, ad esempio:
# want context processors
return render_to_response('template.html', {'foo':'bar'}, context_instance=RequestContext(request))
# no context processors
return render_to_response('template.html', {'foo':'bar'})
penso che funzionerà per questa particolare situazione, ma cercando di pensare più grande qui: che cosa succede se ho avuto 3 o 4 funzioni del processore contesto che sono stati necessari per una vista a caso, a quel punto devo solo importarli e chiamali nelle viste che ne hanno bisogno? Perché i processori di contesto sono una specie di tutto o niente, giusto? – rennat
A destra, i processori di contesto in settings.py sono tutti o nessuno con RequestContext. Un modo più flessibile per farlo sarebbe quello di sottoclasse RequestContext per ogni set di processori che si desidera e impostare lì i processori di contesto, in modo da poter disporre di SidebarContext e CommentsContext, ecc. Ciò consentirebbe anche ai processori di contesto di settings.py, che verrebbero renderli più specifici per le app, il che è meglio se hai molte app che usano processori di contesto. Quindi, avresti solo bisogno di un buon metodo per incatenarli ... – tghw
- 1. Quando è opportuno utilizzare l'FTP?
- 2. Quando è opportuno utilizzare NOLOCK?
- 3. Processori di contesto vs middleware in django
- 4. Quando è opportuno utilizzare i codici di errore?
- 5. Quando è opportuno utilizzare l'attributo KnownType?
- 6. Android: quando è opportuno utilizzare FragmentTransaction.remove?
- 7. Quando è opportuno utilizzare variabili finali vuote?
- 8. Quando è opportuno utilizzare UUID per un progetto Web?
- 9. Quando è opportuno utilizzare le funzioni annidate in Python?
- 10. Come rendere R utilizzare tutti i processori?
- 11. Processori contesto personalizzati, unit test e factory richiesta
- 12. Quando è opportuno utilizzare un EAR e quando dovrebbero essere le tue app in WAR?
- 13. ASN.1 vs JSON quando è opportuno utilizzarli?
- 14. NSAutoreleasePool. Quando è opportuno creare un nuovo pool di autorelease?
- 15. processore di contesto django
- 16. Quando è opportuno utilizzare un tipo associato rispetto a un tipo generico?
- 17. Quando è opportuno mappare un DTO alla controparte Entity
- 18. Quando è opportuno utilizzare statici (su namespace senza nome) in C++?
- 19. Javascript quando utilizzare i prototipi
- 20. Collega i thread ai processori
- 21. Django quando utilizzare metodo teardown
- 22. come avviare i processori multicore?
- 23. Django non è in grado di eseguire il rendering del contesto quando è nella shell
- 24. I thread sono eseguiti su più processori?
- 25. MPI Numero di processori?
- 26. Quando è necessario utilizzare i reindirizzamenti di binding?
- 27. Quando utilizzare i pacchetti DropWizard?
- 28. Esecuzione del programma di ruby su tutti i processori
- 29. Quando è necessario utilizzare _.bindAll() in Backbone.js?
- 30. Come codificare i processori lombok e JPAMetalModel con Maven
questa mi sembra la migliore risposta a me – Rasiel
Sì, l'ho cambiato perché il bit dei processori extra era quello che stavo veramente cercando. – rennat