Menu
CoddyTech

Partiels de template

Fait partie de la section API JSON du Journey Django de Coddy. Leçon 14 sur 19.

Un script n’a pas toujours besoin de JSON. Après avoir ajouté une tâche, il peut demander au serveur le <li> déjà prêt pour cette tâche et l’insérer dans la liste. Un modèle dessine déjà cette ligne, le serveur devrait donc la réutiliser.

Django 6.0 a ajouté les fragments de modèle : une partie nommée d’un modèle que vous pouvez également afficher seule. Encadrez-la avec {% partialdef %} ; inline l’affiche aussi à cet endroit, à chaque tour d’une boucle. Une vue affiche uniquement la partie en indiquant le nom du modèle, # et le nom du fragment :

{% partialdef cart-total inline %}
    <strong>{{ cart.total }}</strong>
{% endpartialdef %}
return render(request, "shop/cart.html#cart-total", {"cart": cart})

Le contexte doit contenir ce que la partie lit, ici cart. La page et la partie partagent le même balisage, elles ne peuvent donc pas diverger.

challenge icon

Défi

Moyen

Afficher une ligne de /tasks/ seule :

  • Dans list.html, faites de <li> un fragment nommé task-row, toujours affiché pour chaque tâche.
  • Une vue task_row(request, pk) qui affiche uniquement ce fragment et renvoie une erreur 404 si la tâche n’existe pas.
  • La route "tasks/<int:pk>/row/", nommée task_row.

Cliquez sur Run, puis ouvrez /tasks/1/row/ : une seule ligne.

Essayez vous-même

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>All tasks</title>
</head>
<body>
    <h1>All tasks</h1>
    <ul id="tasks">
        {% for task in tasks %}
            <li id="task-{{ task.id }}">{{ task.title }}{% if task.done %} (done){% endif %}</li>
        {% endfor %}
    </ul>
</body>
</html>
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de API JSON

Entraînez-vous par vous-même : Playground Django