Menu
CoddyTech

Partiels de template

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

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

Django 6.0 a ajouté les partials de modèle : une partie nommée d’un modèle que tu peux aussi afficher seule. Encadre-la avec {% partialdef name %} et {% endpartialdef %} ; avec le mot inline, elle est aussi affichée à son emplacement, une fois pour chaque élément d’une boucle. Une vue affiche uniquement la partie en indiquant le nom du modèle, # et le nom du partial :

{% 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 seule une ligne de la nouvelle page /tasks/.

  1. Dans tasks/list.html, transforme le <li> de la boucle en fragment inline nommé task-row, afin que /tasks/ affiche toujours toutes les lignes.
  2. Dans tasks/views.py, ajoute task_row(request, pk) : affiche uniquement ce fragment en lui transmettant task, ou la page 404 de Django.
  3. Dans tasks/urls.py, ajoute "tasks/<int:pk>/row/" nommé task_row.

Ouvre /tasks/3/row/ : uniquement Call the bank (done), sans titre.

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