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

Template Tags

I template tag di Django sono costrutti speciali racchiusi tra {% %} che aggiungono logica ai template. Permettono di eseguire condizioni, cicli, includere altri template e molto altro.

Tag Condizionale: {% if %}

Il tag {% if %} permette di mostrare contenuto in base a una condizione:

{% if utente.is_authenticated %}
    <p>Benvenuto, {{ utente.username }}!</p>
{% elif utente.is_staff %}
    <p>Accesso staff.</p>
{% else %}
    <p>Effettua il login.</p>
{% endif %}

Tag di Ciclo: {% for %}

Il tag {% for %} itera sugli elementi di una lista o queryset:

<ul>
{% for articolo in articoli %}
    <li>{{ forloop.counter }}. {{ articolo.titolo }}</li>
{% empty %}
    <li>Nessun articolo disponibile.</li>
{% endfor %}
</ul>

La variabile forloop offre proprieta utili come counter, counter0, first, last e revcounter.

Ereditarieta: {% block %} e {% extends %}

Questi tag permettono di definire template base riutilizzabili:

<!-- base.html -->
<html>
<body>
    {% block contenuto %}{% endblock %}
</body>
</html>

<!-- pagina.html -->
{% extends "base.html" %}
{% block contenuto %}
    <h1>Contenuto della pagina</h1>
{% endblock %}

Inclusione: {% include %}

Il tag {% include %} inserisce un altro template all’interno del corrente:

{% include "componenti/navbar.html" %}
{% include "componenti/card.html" with titolo="Django" descrizione="Framework web" %}

URL Dinamici: {% url %}

Genera URL a partire dal nome della view, evitando di scrivere percorsi fissi:

<a href="{% url 'dettaglio_articolo' articolo.pk %}">Leggi</a>
<a href="{% url 'homepage' %}">Home</a>

Protezione CSRF: {% csrf_token %}

Obbligatorio nei form POST per la protezione contro attacchi CSRF:

<form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">Invia</button>
</form>

Caricamento Tag Esterni: {% load %}

Per utilizzare tag e filtri da librerie esterne o personalizzate:

{% load static %}
{% load humanize %}
{% load i18n %}

Variabili Temporanee: {% with %}

Il tag {% with %} crea variabili temporanee per evitare calcoli ripetuti:

{% with totale=ordine.calcola_totale %}
    <p>Totale ordine: {{ totale }} EUR</p>
{% endwith %}

Commenti: {% comment %}

Per commentare blocchi di codice nel template:

{% comment "Sezione disabilitata temporaneamente" %}
    <div>Questo codice non verra renderizzato.</div>
{% endcomment %}

Tag Personalizzati

Puoi creare tag personalizzati definendoli in un file dentro templatetags/:

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

register = template.Library()

@register.simple_tag
def saluto(nome):
    return f'Ciao, {nome}!'

@register.inclusion_tag('componenti/lista.html')
def mostra_lista(elementi):
    return {'elementi': elementi}

Usali nel template dopo averli caricati:

{% load custom_tags %}
{% saluto "Mario" %}
{% mostra_lista articoli %}

Conclusione

I template tag di Django offrono strumenti potenti per aggiungere logica alla presentazione senza scrivere codice Python nei template. Dai condizionali ai cicli, dall’ereditarieta ai tag personalizzati, hai tutto il necessario per costruire interfacce dinamiche e ben organizzate.