00
:
00
:
00
:
00
•Corso SEO AI - Usa SEOEMAIL al checkout per il 30% di sconto

Template Filters

I template filter di Django permettono di trasformare e formattare le variabili direttamente nel template. Si applicano usando il carattere pipe | dopo la variabile: {{ variabile|filtro }}.

Sintassi Base

I filtri si concatenano e possono accettare argomenti separati da ::

{{ nome|lower }}
{{ testo|truncatewords:20 }}
{{ data|date:"d/m/Y" }}

Filtro date

Formatta oggetti data e datetime secondo il formato specificato:

{{ articolo.data_pubblicazione|date:"d F Y" }}
<!-- Output: 06 Febbraio 2026 -->

{{ adesso|date:"H:i" }}
<!-- Output: 14:30 -->

Filtro default

Mostra un valore predefinito se la variabile e vuota o None:

{{ biografia|default:"Nessuna biografia disponibile." }}
{{ punteggio|default_if_none:"N/D" }}

Filtro length

Restituisce la lunghezza di una stringa o lista:

<p>Hai {{ messaggi|length }} messaggi.</p>
{% if prodotti|length_is:"0" %}
    <p>Nessun prodotto trovato.</p>
{% endif %}

Filtro truncatewords e truncatechars

Tronca il testo a un numero specifico di parole o caratteri:

{{ descrizione|truncatewords:15 }}
<!-- Tronca a 15 parole, aggiungendo "..." -->

{{ titolo|truncatechars:50 }}
<!-- Tronca a 50 caratteri -->

Filtro join

Unisce gli elementi di una lista con un separatore:

{{ tags|join:", " }}
<!-- Output: python, django, web -->

Filtri safe e escape

Il filtro safe disabilita l’auto-escaping per mostrare HTML grezzo. Il filtro escape forza l’escaping:

{{ contenuto_html|safe }}
<!-- Renderizza l'HTML contenuto nella variabile -->

{{ input_utente|escape }}
<!-- Converte < > & in entita HTML -->

Filtro linebreaks

Converte le interruzioni di riga in tag HTML <p> e <br>:

{{ testo_multiriga|linebreaks }}
<!-- Avvolge i paragrafi in <p> e le righe singole in <br> -->

{{ testo_multiriga|linebreaksbr }}
<!-- Converte solo in <br>, senza <p> -->

Filtro dictsort

Ordina una lista di dizionari per una chiave specifica:

{% for studente in studenti|dictsort:"cognome" %}
    <p>{{ studente.cognome }}, {{ studente.nome }}</p>
{% endfor %}

{% for studente in studenti|dictsortreversed:"voto" %}
    <p>{{ studente.nome }}: {{ studente.voto }}</p>
{% endfor %}

Altri Filtri Utili

{{ nome|upper }}            <!-- Tutto maiuscolo -->
{{ nome|lower }}            <!-- Tutto minuscolo -->
{{ nome|title }}            <!-- Prima lettera maiuscola per parola -->
{{ nome|capfirst }}         <!-- Prima lettera maiuscola -->
{{ prezzo|floatformat:2 }}  <!-- Formatta decimali: 19.90 -->
{{ lista|first }}           <!-- Primo elemento -->
{{ lista|last }}            <!-- Ultimo elemento -->
{{ lista|random }}          <!-- Elemento casuale -->
{{ testo|slugify }}         <!-- Converte in slug URL-safe -->
{{ testo|wordcount }}       <!-- Conta le parole -->
{{ valore|add:5 }}          <!-- Somma un valore -->

Filtri Personalizzati

Puoi creare filtri personalizzati nella cartella templatetags/:

# myapp/templatetags/filtri_custom.py
from django import template

register = template.Library()

@register.filter
def euro(valore):
    return f'{valore:.2f} EUR'

@register.filter(name='moltiplica')
def moltiplica(valore, fattore):
    return valore * fattore
{% load filtri_custom %}
{{ prezzo|euro }}              <!-- 19.90 EUR -->
{{ quantita|moltiplica:3 }}   <!-- 15 -->

Conclusione

I filtri dei template Django sono uno strumento versatile per formattare e trasformare i dati direttamente nella presentazione. Dai formati di data alla troncatura del testo, dall’ordinamento alla creazione di filtri personalizzati, hai tutti gli strumenti per presentare i dati nel modo migliore senza inquinare la logica delle view.