Częściowe szablony
Część sekcji API JSON ścieżki Django w Coddy. Lekcja 14 z 19.
Skrypt nie zawsze potrzebuje JSON. Po dodaniu zadania może poprosić serwer o gotowy element <li> tego zadania i wstawić go na listę. Szablon już generuje ten wiersz, więc serwer powinien użyć go ponownie.
Django 6.0 wprowadziło fragmenty szablonów: nazwany fragment szablonu, który można również wyrenderować samodzielnie. Owiń go w {% partialdef name %} i {% endpartialdef %}; dodanie słowa inline powoduje również wygenerowanie go w tym miejscu, raz dla każdego elementu pętli. Widok renderuje tylko ten fragment, używając nazwy szablonu, # i nazwy fragmentu:
{% partialdef cart-total inline %}
<strong>{{ cart.total }}</strong>
{% endpartialdef %}return render(request, "shop/cart.html#cart-total", {"cart": cart})Kontekst musi zawierać to, z czego korzysta fragment, w tym przypadku cart. Strona i fragment współdzielą ten sam znacznik, więc nie mogą się od siebie różnić.
Wyzwanie
ŚredniWyświetl samodzielnie jeden wiersz z nowej strony /tasks/.
- W pliku
tasks/list.htmlustaw<li>w pętli jako częśćinlineo nazwietask-row, aby strona/tasks/nadal wyświetlała wszystkie wiersze. - W pliku
tasks/views.pydodajtask_row(request, pk): wyrenderuj tylko tę część, przekazująctask, albo wyświetl stronę 404 Django. - W pliku
tasks/urls.pydodaj ścieżkę"tasks/<int:pk>/row/"o nazwietask_row.
Otwórz /tasks/3/row/: tylko Call the bank (done), bez nagłówka.
Spróbuj swoich sił
<!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>
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji API JSON
2Odczytywanie żądań
Filtrowanie za pomocą zapytaniaTworzenie za pomocą POST5Projekt: Porządkowanie zadań
Projekt: PriorytetyProjekt: Usuwanie ukończonych zadańPoćwicz samodzielnie: Edytor online Django