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.
Aufgabe
MittelGib eine einzelne Zeile der neuen Seite /tasks/ separat aus.
- Mach in
tasks/list.htmldas<li>in der Schleife zu eineminline-Partial namenstask-row, damit/tasks/weiterhin alle Zeilen anzeigt. - Füge in
tasks/views.pytask_row(request, pk)hinzu: Rendere nur dieses Partial und übergibtask, oder zeige Djangos 404-Seite an. - Füge in
tasks/urls.py"tasks/<int:pk>/row/"mit dem Namentask_rowhinzu.
Ö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>
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