Django es el entorno de desarrollo web para perfeccionistas con límites de tiempo

Settings accesibles desde las plantillas

Muchas veces deseamos acceder a los settings de nuestro proyecto desde alguna de nuestras plantillas. Lo ideal es crear un context processor que nos permita acceder a ellos desde cualquier plantilla de cualquier aplicación de nuestro proyecto.

Para ello en la carpeta de nuestro proyecto creamos un nuevo archivo context_processors.py con el siguiente código:

# importamos los settings del proyecto
from django.conf import settings as _settings

def settings(request):
    # los devolvemos en la variable de contexto "settings"
    return {'settings': _settings}

A continuación tenemos que añadir nuestro procesador de contexto a TEMPLATE_CONTEXT_PROCESSORS en nuestros settings (archivo settings.py). Recuerda que Django habilita los procesadores de contexto auth, debug e i18n por defecto. Al sobreescribir TEMPLATE_CONTEXT_PROCESSORS estaremos invalidándolos, por lo que deberemos añadirlos manualmente:

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.core.context_processors.auth',
    'django.core.context_processors.debug',
    'django.core.context_processors.i18n',
    'mi_aplicacion.context_processors.settings',)

Ahora podemos acceder fácilmente a nuestros settings desde cualquier plantilla utilizando el nombre del setting cuyo valor queremos obtener. Por ejemplo:

<html>
    <body>
        <p>Todos los archivos de media están en {{ settings.MEDIA_URL }}.
        La zona horaria para nuestro proyecto es {{ settings.TIME_ZONE }}</p>
    </body>
</html>

Importante: Recuerda que para que las variables de contexto sean accesibles desde las plantillas tus vistas tienen que utilizar RequestContext(request, diccionario_de_contexto) para instanciar un contexto en lugar de Context(dicionario_de_contexto). Si utilizas vistas genéricas no tienes de qué preocuparte, las vistas genéricas utilizan RequestContext por defecto. Ejemplo de vista utilizando RequestContext:

from django.template import RequestContext
from django.shortcuts import render_to_response

def mi_vista(request):
    return render_to_response('mi_plantilla.html', context_instance=RequestContext(request))

Publicado por Antonio Melé el Miércoles 26 de Noviembre de 2008 Compártelo: Facebook: Twitter: | Categorías: plantillas, settings, trucos

Entradas similares

Expires headers lejanos y versiones de media

Un buen truco para mejorar el tiempo de carga de nuestras páginas es añadir a los archivos de media (imágenes, css, js) el header ...


Templatetag {% if %} con más comparaciones

Este snippet reemplaza la funcionalidad del templatetag {% if %} permitiendo realizar comparaciones con operadores >, <, >=, <=, != además de las comparaciones que permite hacer {% if %} por defecto. Por ...


 
Representar campos con choices en nuestras plantillas

Cuando usamos un campo con diferentes opciones (choices) en nuestro modelo utilizamos una lista de elementos cada uno con el valor real que se ...


Enviar e-mails con Django y GMail

Personalmente siempre he utilizado mi propio servidor SMTP para el envio de e-mails con Django, pero hoy me he topado con este post en ...


 
 

0 comentarios:

No hay ningún comentario todavía.

Escribe un comentario: