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 stellt diese Zeile bereits dar, daher sollte der Server sie wiederverwenden.
Django 6.0 führte Template-Teile ein: einen benannten Teil einer Vorlage, den du auch allein rendern kannst. Umschließe ihn mit {% partialdef %}; inline stellt ihn außerdem direkt an Ort und Stelle dar, bei jedem Durchlauf einer Schleife. Eine View rendert nur den Teil, indem sie den Namen der Vorlage, # und den Namen des Template-Teils angibt:
{% partialdef cart-total inline %}
<strong>{{ cart.total }}</strong>
{% endpartialdef %}return render(request, "shop/cart.html#cart-total", {"cart": cart})Der Kontext muss enthalten, was der Teil ausliest, hier cart. Die Seite und der Teil verwenden dasselbe Markup, sodass sie nicht auseinanderdriften können.
Aufgabe
MittelGib eine einzelne Zeile von /tasks/ separat aus:
- Mach in
list.htmldas<li>zu einem Partial namenstask-row, das weiterhin für jede Aufgabe gerendert wird. - Eine View
task_row(request, pk), die nur dieses Partial rendert und bei einer nicht vorhandenen Aufgabe den Status 404 zurückgibt. - Die Route
"tasks/<int:pk>/row/"mit dem Namentask_row.
Klicke auf „Run“ und rufe dann /tasks/1/row/ auf: eine Zeile.
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>
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in JSON-APIs
4Deine API aufrufen
Eine Seite, die die API aufruftVom Skript gelesene Schlüssel2Anfragen lesen
Mit einer Query filternMit POST erstellen5Projekt: Arbeit sortieren
Projekt: PrioritätenProjekt: Erledigte Aufgaben löschenÜbe selbstständig: Django-Playground