2012-04-28 21 views

risposta

16

È possibile farlo da soli

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

register = template.Library() 

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

Documentation

+12

Chiunque visita qui dovrebbe guardare la soluzione di Ibatteau che è molto più semplice: basta usare .strip all'interno del modello stesso (non è necessario registrare un nuovo filtro). – bryn

+2

L'uso di '{{var.example.strip}}' è in effetti più semplice, tuttavia anche questa soluzione ha il suo uso. Per esempio ti permette di fare '{% filter trim%} {% someothertag%} {% endfilter%}', che non è altrimenti possibile. – jlh

77

Django templates consentono di accedere metodi e proprietà utilizzando la '' sintassi:

{{ var.example.strip }} 

è possibile estendere questo concatenando altri filtri quando hai a che fare con l'HTML, ad esempio:

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

Qui prima rimuovere eventuali <p> e <img> tag, poi dire Django si può tranquillamente rendere il resto del contenuto, che abbiamo spogliato di qualsiasi spazio bianco.

+4

È documentato o è un trucco non ufficiale? – Medorator

+3

Non è una funzione di Django, ma di Python. È documentato qui: https://docs.python.org/2/library/stdtypes.html#str.strip. Documentazione delle variabili del modello Django: https://docs.djangoproject.com/en/dev/ref/templates/language/#variables – maciek

+1

un commento - il filtro 'removetags' viene rimosso dal django 1.10, quindi fai attenzione – Jerzyk

Problemi correlati