Pregunta

Si aproximadamente la mitad de mis vistas requieren el mismo conjunto de datos, ¿es apropiado usar un procesador de contexto para hacer que los datos estén siempre disponibles, o hay una mejor manera de evitar repetir el código para obtener esos datos en varias vistas sin consultar? los datos si no se usarán en la vista?

¿Fue útil?

Solución

El inicializador RequestContext ejecutará los procesadores de contexto enumerados en el archivo de configuración, pero también toma una lista de procesadores adicionales para ejecutar. Cualquier procesador de contexto de propósito general se puede colocar en settings.py y se pueden agregar más específicos al RequestContext caso por caso.

Deje RequestContext por completo para no ejecutar ningún procesador de contexto.

# 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'})

Otros consejos

Puede filtrar qué vistas realmente usan procesadores de contexto pasando solo RequestContext (request) solo a aquellos que lo necesitan, por ejemplo:

# 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'})
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top