2010-11-23 20 views
5

¿Cuál es la forma más simple de crear una etiqueta de plantilla de Django que muestra la versión de Django en una plantilla?Etiqueta de plantilla de Django para mostrar la versión de Django

quiero poner lo siguiente en una plantilla de Django y tenerlo salida de la versión de Django (en mi caso, base.html):

{{ django_version }} 

Sé que el siguiente código Python da salida a la versión en Django una concha, pero gustaría saber donde debo poner este código y cómo debo llamarlo desde la plantilla:

import django 
print django.VERSION 

ACTUALIZACIÓN: he intentado lo siguiente en views.py, pero no aparece nada en el plantilla:

import django  
from django.template import loader, Context 
from django.http import HttpResponse 
from django.shortcuts import render_to_response 

    def base(request): 
     django_version = django.VERSION 
     return render_to_response('base.html', {'django_version': django_version}) 

Respuesta

3

cuenta de esto (en la actualidad el uso de Django 1.3) - Necesitaba anexar el nombre de la función 'django_version' a la tupla TEMPLATE_CONTEXT_PROCESSORS en settings.p Y:

TEMPLATE_CONTEXT_PROCESSORS = ( 
    # ... 
    'myproject.context_processors.django_version', 
) 

context_processors.py (gracias a zsquare):

import django 
def django_version(request): 
    return { 'django_version': django.VERSION } 

urls.py:

urlpatterns += patterns('django.views.generic.simple', 
    (r'^$', 'direct_to_template', {'template': 'base.html'}), 
) 

Ponga lo siguiente en sus plantillas, tales como base.html:

{{ django_version }} 
+0

Puede deberse a la versión más nueva ahora, pero no tuve que configurar ninguna configuración de urls.py como la que tiene allí. Pude llamar a '{{django_version}}' directamente suponiendo que realicé el cambio en mi settings.py y context_processors.py – whoisearth

2

Debe proporcionar el django.VERSION como variable a la plantilla a través del contexto de la plantilla. Recomiendo seguir el tutorial de django o leer los documentos de django si no sabes cómo hacerlo.

+0

Soy un programador principiante y he mirado los tutoriales, pero parece que esto no funciona. He actualizado el ejemplo con algún código que intenté en views.py. – sgriffee

+0

¿Estás seguro de que se muestra la plantilla? Cuando agrega información adicional a la plantilla, p. 'La versión de django es: {{django_version}}', dices que el resultado es 'La versión de django es:' –

+0

Sí, se muestra la plantilla. Se muestra cualquier modificación a las palabras 'La versión django es:', pero {{django_version}} no genera nada. – sgriffee

3

Un procesador de contexto simple sería hacer lo que quiera

context_processors.py

import django 
def django_version(request): 
    return { 'django_version': django.VERSION } 

No se olvide de incluir este procesador de contexto en la configuración de bajo TEMPLATE_CONTEXT_PROCESSORS

+0

Esto suena bien. He puesto lo anterior en /mysite/blog/context_processors.py y luego puse lo siguiente en /mysite/settings.py (Tuve que agregar la primera línea django.contrib.auth.context_processors.auth porque sin ella obtuvo un error):

TEMPLATE_CONTEXT_PROCESSORS = ( \t 'django.contrib.auth.context_processors.auth', \t 'mysite.blog.context_processors.py', ) 
Todavía no aparece nada en la página HTML con la plantilla que contiene {{django_version}}. – sgriffee

+0

Deberías estar agregando mysite.blog.context_processors (sin el .py) – zsquare

+0

Mi mal ... Lo he cambiado a mysite.blog.context_processors, pero aún no lo tengo. Creo que debe haber algo más que esté causando el problema. Lo mantendré. Aclamaciones. – sgriffee

Cuestiones relacionadas