2012-07-01 15 views
6

testlist es solo una lista de objetos. Por ejemploTemplateSyntaxError cada vez que intento usar un filtro en mis plantillas

testlist.0.name 

es simplemente "Test3"

Tengo un archivo temp.html

{% extends 'base.html' %} 
{% block content %} 
{{testlist.0.name | safe}} 
{% endblock %} 

eso es todo lo que hay en el archivo temp.html y base.html funciona bien con todos otros archivos html que lo utilizan

temp.html me da

TemplateSyntaxError at /mytests/ 
Could not parse the remainder: ' | safe' from 'testlist.0.name | safe' 
Request Method: GET 
Request URL: http://127.0.0.1:8000/mytests/ 
Django Version: 1.4 
Exception Type: TemplateSyntaxError 
Exception Value:  
Could not parse the remainder: ' | safe' from 'testlist.0.name | safe' 

cuando lo cambio a:

{% extends 'base.html' %} 
{% block content %} 
{{testlist.0.lastedited |date:"SHORT_DATE_FORMAT" }} 
{% endblock %} 

me da

TemplateSyntaxError at /mytests/ 
could not parse some characters: testlist.0.lastedited| ||date:"SHORT_DATE_FORMAT" 
Request Method: GET 
Request URL: http://127.0.0.1:8000/mytests/ 
Django Version: 1.4 
Exception Type: TemplateSyntaxError 
Exception Value:  
Could not parse some characters: testlist.0.lastedited| ||date:"SHORT_DATE_FORMAT" 

se entiende la idea. Parece que no puedo usar ningún filtro en mis plantillas django. Probé con otros filtros y todavía obtengo lo mismo. ¿Faltan algunas opciones que permiten el uso del carácter de tubería? ¿Puede ser que el "|" clave en mi macbook pro no es el personaje de la pipa sino otro personaje que django no reconoce?

Respuesta

9

Parece que necesita eliminar el espacio en blanco entre su testlist.0.lastedited y el filtro. Pruebe algo como:

{% extends 'base.html' %} 
{% block content %} 
{{testlist.0.name|safe}} 
{% endblock %} 

supongo que esto es su problema, ya que en la documentación, que no tienen ningún espacio en blanco, y analizar la plantilla como una cadena o algo cerca de ella, por lo que pueden hacerlo los espacios en blanco afectarlo.

Template example

+0

eso fue todo, muchas gracias. Me volví loco por una hora – panosmm

+1

Ok, acabo de descubrir cómo hacerlo, gracias de nuevo. Soy nuevo en esto :) – panosmm

Cuestiones relacionadas