Menu
CoddyTech

Şablon Parçaları

Coddy'nin Django Journey'sinin JSON API'leri bölümünün bir parçası. Ders 14 / 19.

Bir betik her zaman JSON istemez. Bir görev ekledikten sonra sunucudan bu görevin hazır <li> öğesini isteyip listeye ekleyebilir. Bir şablon bu satırı zaten oluşturduğundan sunucu onu yeniden kullanmalıdır.

Django 6.0, şablon parçalarını ekledi: tek başına da işleyebileceğiniz, adlandırılmış bir şablon parçası. Parçayı {% partialdef %} içine alın; inline ayrıca onu her döngü turunda bulunduğu yerde oluşturur. Bir görünüm, yalnızca şablonun adı, # ve parçanın adıyla belirtilen kısmı işler:

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

Bağlam, burada cart olmak üzere, parçanın okuduğu değerleri içermelidir. Sayfa ve parça aynı biçimlendirmeyi paylaşır; böylece birbirinden farklılaşamazlar.

challenge icon

Görev

Orta

/tasks/ yolundaki tek bir satırı bağımsız olarak sun:

  • list.html dosyasında <li> öğesini task-row adlı bir partial yap; her görev için çizilmeye devam etsin.
  • Yalnızca bu partial'ı oluşturan ve görev bulunamazsa 404 döndüren bir task_row(request, pk) görünümü.
  • task_row adlı "tasks/<int:pk>/row/" rotası.

Run'a bas, ardından /tasks/1/row/ adresini aç: tek bir satır.

Kendin dene

<!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 iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

JSON API'leri bölümündeki tüm dersler

Kendi başına pratik yap: Django playground