Wenn angemessen ist es Django Kontext Prozessoren zu bedienen?
-
06-07-2019 - |
Frage
Wenn etwa die Hälfte meiner Ansichten, die die gleiche Datenmenge benötigt, ist es angebracht, einen Kontext-Prozessor zu verwenden, die Daten immer verfügbar zu machen, oder gibt es eine bessere Art und Weise zu wiederholen, den Code zu vermeiden, dass Daten über mehrere Ansichten zu erhalten, ohne die Abfrage die Daten, wenn sie nicht in der Ansicht verwendet werden?
Lösung
Die RequestContext
initializer wird alle Kontext-Prozessoren in der Einstellungsdatei aufgeführt laufen, aber es braucht auch eine Liste von zusätzlichen Prozessoren laufen zu lassen. Jegliche Allzweck Kontext Prozessoren können in settings.py und speziellere genommen werden kann auf einer Fall-zu-Fall-Basis zu dem RequestContext
hinzugefügt werden.
Leave RequestContext
ganz aus, um keine Kontext-Prozessoren ausgeführt werden.
# 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'})
Andere Tipps
Sie können herausfiltern, welche Ansichten tatsächlich Kontext Prozessoren von nur vorbei RequestContext(request)
verwenden nur diejenigen, die es brauchen, z.
# 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'})