2012-04-28 15 views

Respuesta

16

Usted puede hacerlo usted mismo

from django import template 
from django.template.defaultfilters import stringfilter 

register = template.Library() 

@register.filter 
@stringfilter 
def trim(value): 
    return value.strip() 

Documentation

+12

Cualquier persona que visite aquí debe ver la solución de Ibatteau, que es mucho más simple: simplemente use .strip dentro de la plantilla (no es necesario registrar un nuevo filtro). – bryn

+2

Usar '{{var.example.strip}}' es realmente más simple, sin embargo, esta solución aquí también tiene su uso. Por ejemplo, le permite hacer '{% filter trim%} {% someothertag%} {% endfilter%}', que de otro modo no es posible. – jlh

77

Django templates le permiten acceder a los métodos y propiedades mediante el uso de la ''. Sintaxis:

{{ var.example.strip }} 

Se puede extender este encadenando otros filtros cuando se está tratando con HTML, por ejemplo:

{{ var.example.strip|safe|removetags:"p img" }} 

Aquí se retire primero cualquier <p> y <img> etiquetas, luego decirle a Django que puede de manera segura renderiza el resto del contenido, que hemos despojado de cualquier espacio en blanco.

+4

¿Está documentado o es un truco no oficial? – Medorator

+3

No es función de Django, sino de Python. Está documentado aquí: https://docs.python.org/2/library/stdtypes.html#str.strip. Documentación de las variables de plantilla de Django: https://docs.djangoproject.com/en/dev/ref/templates/language/#variables – maciek

+1

un comentario: el filtro 'removetags' se está eliminando a partir de django 1.10, por lo que tenga cuidado – Jerzyk

Cuestiones relacionadas