Menu
CoddyTech

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ć.

challenge icon

Wyzwanie

Średni

Wyświetl samodzielnie jeden wiersz z nowej strony /tasks/.

  1. W pliku tasks/list.html ustaw <li> w pętli jako część inline o nazwie task-row, aby strona /tasks/ nadal wyświetlała wszystkie wiersze.
  2. W pliku tasks/views.py dodaj task_row(request, pk): wyrenderuj tylko tę część, przekazując task, albo wyświetl stronę 404 Django.
  3. W pliku tasks/urls.py dodaj ścieżkę "tasks/<int:pk>/row/" o nazwie task_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>
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji API JSON

Poćwicz samodzielnie: Edytor online Django