2012-08-28 10 views
7

Me está encontrando un error muy extraño. Tengo un ID de aplicación definido en mi archivo settings.py así:Variables Django settings.py en plantillas

CARDSPRING_APP_ID = '################' 

Esto funciona en casi todas las páginas en mi sitio, a excepción de uno. Por extraño que parezca, otras variables funcionan. En una sección de secuencia de comandos en la página, tengo el siguiente:

alert("cs appid=" + {{ CARDSPRING_APP_ID }} + 
" sectoken=" + {{ securityToken }} + 
" timestamp= " +{{ timestamp }} + 
" hash = " + {{ digestedHash }} + 
" ccnum " + $('.card-number').val() + 
" exp" + $('.expiration-month').val() + $('.expiration-year').val() + 
" user = " + {{ csid }}); 

Cuando se representa la página, se evalúa a esta

alert("cs appid=" + + 
" sectoken=" + DDFJRMZXD12WVWHFFC###### + 
" timestamp= " +1346183125 + 
" hash = " + a929b3aec9179c700c09d###### + 
" ccnum " + $('.card-number').val() + 
" exp" + $('.expiration-month').val() + $('.expiration-year').val() + 
" user = " + SG1###); 

Es importante destacar que, {{ CARDSPRING_APP_ID }} ha evaluado a nada. ¿Alguien sabe por qué este podría ser el caso? ¡Gracias!

ACTUALIZACIÓN

intenté crear un archivo context_processors.py como se describe en la respuesta a continuación, y se aseguró de añadir que en el lugar adecuado en settings.py. Todavía no tengo un poco de suerte - se evalúa en una página, pero no en el otro ACTUALIZACIÓN

La plantilla se denomina con este comando:

return render_to_response('howto'+str(number)+'.html',locals(),context_instance= RequestContext(request)) 

ACTUALIZACIÓN 3 tengo que trabajar - es necesario añadir esto a mi settings.py

TEMPLATE_CONTEXT_PROCESSORS = global_settings.TEMPLATE_CONTEXT_PROCESSORS + (
    "myapp.context_processors.cardspring", 
) 
+1

¿Tiene un procesador de contexto que da 'CARDSPRING_APP_ID' ​​su valor en las plantillas? –

+0

No estoy seguro, ¿cómo lo verificaría? Sé que 'CARDSPRING_APP_ID' ​​se evalúa adecuadamente en otras páginas del sitio, pero no en este – mythander889

+0

¿Cómo pasa' CARDSPRING_APP_ID' ​​a esas páginas? Puede ser mejor agregarlo como procesador de contexto de todos modos, ya que eso lo agrega automáticamente a todas las páginas. –

Respuesta

8

Crear un archivo llamado context_processors.py y escribir el siguiente procesador de contexto:

from django.conf import settings 

def cardspring(request): 
    return { 'CARDSPRING_APP_ID': settings.CARDSPRING_APP_ID } 

A continuación, agregue your.location.context_processors.cardspring a TEMPLATE_CONTEXT_PROCESSORS en su archivo de configuración de Django, donde your.location es la ubicación del archivo de context_processors.py.

+0

Estoy buscando en 'settings.py' ahora, pero no veo' TEMPLATE_CONTEXT_PROCESSORS '. ¿Debo agregar esto? – mythander889

+0

@ mythander889: Sí, en caso de que no esté allí, entonces debe agregarlo. Asegúrese de agregar también los valores predeterminados (consulte https://docs.djangoproject.com/en/1.4/ref/settings/#template-context-processors) y luego agregue su propio procesador de contexto. –

+0

Lo he agregado como describiste con un poco de ayuda de [aquí] (http://www.b-list.org/weblog/2006/jun/14/django-tips-template-context-processors/), pero todavía no he tenido suerte. ¿Hay algo que deba incluir en el archivo html?Es lo único que se me ocurre que podría ser diferente – mythander889

Cuestiones relacionadas