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?

War es hilfreich?

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'})
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top