Quando è appropriato usare i processori di contesto Django?
-
06-07-2019 - |
Domanda
Se circa la metà delle mie visualizzazioni richiede lo stesso set di dati, è appropriato utilizzare un processore di contesto per rendere i dati sempre disponibili o esiste un modo migliore per evitare di ripetere il codice per ottenere quei dati su più visualizzazioni senza interrogare i dati se non verranno utilizzati nella vista?
Soluzione
L'inizializzatore RequestContext
eseguirà tutti i processori di contesto elencati nel file delle impostazioni, ma richiede anche un elenco di processori aggiuntivi da eseguire. Tutti i processori di contesto per scopi generici possono essere inseriti in settings.py e altri più specifici possono essere aggiunti al RequestContext
caso per caso.
Lasciare RequestContext
completamente fuori per non eseguire processori 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'})
Altri suggerimenti
Puoi filtrare quali viste utilizzano effettivamente i processori di contesto passando solo RequestContext (richiesta)
solo a quelle che ne hanno bisogno, ad es .:
# 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'})