solicitud de Django en la plantilla
Pregunta
He activado el procesador de peticiones django
TEMPLATE_PROCESSORS = (
"django.core.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.request",
)
Aún no tengo para solicitar variable disponible en las plantillas. Tengo que pasar manualmente. Usando Django 1.0.2 Por todas partes en la web parece que es sólo alrededor habilitado solicitud procesador ..
También estoy usando RequestContext como:
return render_to_response(
'profile.html',
{
'persons':Person.objects.all(),
'person':Person.objects.get(id=id),
'request':request,
},
context_instance=RequestContext(request)
)
sin suerte
ohh maldito
el nuevo nombre para que sea TEMPLATE_CONTEXT_PROCESSORS
Solución
settings.py:
TEMPLATE_CONTEXT_PROCESSORS = (
# ...
'django.core.context_processors.request',
# ...
)
Otros consejos
TEMPLATE_CONTEXT_PROCESSORS en lugar de TEMPLATE_PROCESSORS
Tenga en cuenta que a partir de Django 1.8, esto ha cambiado a un ajuste de "plantillas", y en la configuración por defecto, el procesador de peticiones no está incluido.
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
# insert your TEMPLATE_DIRS here
],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
# Insert your TEMPLATE_CONTEXT_PROCESSORS here or use this
# list if you haven't customized them:
'django.contrib.auth.context_processors.auth',
'django.template.context_processors.debug',
'django.template.context_processors.i18n',
'django.template.context_processors.media',
'django.template.context_processors.static',
'django.template.context_processors.tz',
'django.contrib.messages.context_processors.messages',
],
},
},]
Sólo tiene que añadir el procesador de solicitudes de nuevo a solucionar el problema:
'django.core.context_processors.request',
Para obtener más información, ver los Django Docs Actualización .
¿Está seguro que no tiene la variable request
a disposición de la plantilla? ¿Qué pasa cuando se quita la línea
'request':request,
eso es diferente de cuando esa línea está presente. Si la plantilla se carga el mismo de cualquier manera, el problema está en su plantilla.
MIDDLEWARE_CLASSES = ( ... 'Yourfolder.yourfile.yourclass', ... yourclass:
AddRequestToTemplate clase: process_templaet_response (auto, petición, la respuesta): response.context_data [ 'solicitud'] = solicitud