Menu
CoddyTech

Template-Partial-Vorlagen

Teil des Abschnitts JSON-APIs der Django-Journey von Coddy. Lektion 14 von 19.

Ein Skript benötigt nicht immer JSON. Nachdem eine Aufgabe hinzugefügt wurde, kann es den Server um das fertige <li> für diese Aufgabe bitten und es in die Liste einfügen. Eine Vorlage zeichnet diese Zeile bereits, daher sollte der Server sie wiederverwenden.

Django 6.0 führte Vorlagenpartiale ein: einen benannten Teil einer Vorlage, den du auch allein rendern kannst. Umschließe ihn mit {% partialdef name %} und {% endpartialdef %}; mit dem Wort inline wird er außerdem an Ort und Stelle gezeichnet, einmal für jedes Element einer Schleife. Eine Ansicht rendert nur den Teil, indem sie den Vorlagennamen, # und den Namen des Partials verwendet:

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

Der Kontext muss enthalten, worauf der Teil zugreift, hier cart. Die Seite und der Teil verwenden dasselbe Markup, sodass sie nicht auseinanderlaufen können.

challenge icon

Aufgabe

Mittel

Gib eine einzelne Zeile der neuen Seite /tasks/ separat aus.

  1. Mach in tasks/list.html das <li> in der Schleife zu einem inline-Partial namens task-row, damit /tasks/ weiterhin alle Zeilen anzeigt.
  2. Füge in tasks/views.py task_row(request, pk) hinzu: Rendere nur dieses Partial und übergib task, oder zeige Djangos 404-Seite an.
  3. Füge in tasks/urls.py "tasks/<int:pk>/row/" mit dem Namen task_row hinzu.

Öffne /tasks/3/row/: nur „Call the bank (done)“, keine Überschrift.

Probier es selbst

<!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 iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in JSON-APIs

Übe selbstständig: Django-Playground