Les Template Partials dans Django 6.0
Django 6.0 introduit les template partials, des fragments de template nommés et réutilisables. On peut définir un bloc partiel une seule fois et l'inclure à plusieurs endroits dans le même template ou depuis d'autres templates, sans passer par un fichier séparé.
Syntaxe
On définit un partial avec {% partial nom %} et on l'inclut avec {% partialblock nom %}. Les partials acceptent des paramètres pour être réutilisables dans différents contextes.
{# templates/base.html #}
{# Définition d'un partial réutilisable #}
{% partial card %}
<div class="card">
<h3>{{ card_title }}</h3>
<p>{{ card_body }}</p>
{% if card_link %}
<a href="{{ card_link }}">En savoir plus</a>
{% endif %}
</div>
{% endpartial %}
{# Utilisation dans le même template #}
<div class="grid">
{% partialblock card with card_title="Produit A" card_body="Description..." card_link="/a" %}
{% partialblock card with card_title="Produit B" card_body="Autre produit" %}
</div>
Exemple pratique : composant de liste
Les partials sont particulièrement utiles pour créer des composants d'interface récurrents comme des badges, des alertes ou des éléments de liste. Ils remplacent avantageusement les {% include %} qui nécessitaient des fichiers séparés.
{# templates/dashboard.html #}
{% extends "base.html" %}
{% partial stat_badge %}
<span class="badge badge-{{ badge_color }}">
{{ badge_label }} : {{ badge_value }}
</span>
{% endpartial %}
{% block content %}
<h1>Tableau de bord</h1>
<div class="stats">
{% partialblock stat_badge with badge_color="green" badge_label="Actifs" badge_value=active_count %}
{% partialblock stat_badge with badge_color="red" badge_label="Erreurs" badge_value=error_count %}
{% partialblock stat_badge with badge_color="blue" badge_label="Total" badge_value=total_count %}
</div>
{% endblock %}
