He corrido al siguiente problema de procesador de contexto de plantilla de Django.¿Por qué este procesador de contexto de plantilla Django no se aplica a todas las solicitudes?
El procesador contexto se define en myapp/context_processors.py
:
def my_context_processor(request):
return {
'foo': 123,
}
Se cablea en settings.py junto con los procesadores estándar de contexto Django:
TEMPLATE_CONTEXT_PROCESSORS = (
'django.contrib.auth.context_processors.auth',
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
'myproject.myapp.context_processors.my_context_processor',
)
El problema que estoy encontrando es que my_context_processor no se aplica a todas las solicitudes.
Se no se aplica para el siguiente código:
def index(request):
return render_to_response("index.html", locals())
Sin embargo, se aplica para el siguiente código:
def index(request):
return render_to_response("index.html", locals(), context_instance=RequestContext(request))
estaba bajo la impresión de que los procesadores de contexto son aplicado para TODAS las solicitudes, no solo cuando se proporciona context_instance
.
¿Cómo hago que mis procesadores de contexto se apliquen a TODAS las solicitudes?
¿Hay algún atajo SECO que pueda usar para evitar la plantilla repetitiva context_instance? Supongo que un escenario bastante común es que le gustaría que las variables del procesador de contexto estén presentes para todas las solicitudes. Diga que todas las vistas incluyen un pie de página que necesita la lista "linked_sites". "linked_sites" sería proporcionado por un procesador de contexto, pero me gustaría evitar rociar mi código con context_instance = RequestContext (solicitud) :-) – knorv