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örev için hazır bir <li> isteyip onu listeye ekleyebilir. Bir şablon bu satırı zaten oluşturur; bu nedenle sunucu onu yeniden kullanmalıdır.

Django 6.0, şablon parçalarını ekledi: tek başına da oluşturabileceğiniz, adlandırılmış bir şablon parçası. Parçayı {% partialdef name %} ve {% endpartialdef %} içine alın; inline sözcüğüyle, döngünün her öğesi için bir kez olmak üzere, bulunduğu yerde de oluşturulur. Bir görünüm, yalnızca şablonun adı, # ve parçanın adını kullanarak bu parçayı oluşturur:

{% 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ı işaretlemeyi paylaşır; bu nedenle birbirlerinden farklılaşamazlar.

challenge icon

Görev

Orta

Yeni /tasks/ sayfasındaki tek bir satırı tek başına sun.

  1. tasks/list.html dosyasında, döngüdeki <li> öğesini task-row adlı bir inline parçalı şablon yap; böylece /tasks/ tüm satırları göstermeye devam eder.
  2. tasks/views.py dosyasına task_row(request, pk) ekle: yalnızca bu parçalı şablonu, task değerini ileterek görüntüle veya Django'nun 404 sayfasını göster.
  3. tasks/urls.py dosyasına "tasks/<int:pk>/row/" yolunu task_row adıyla ekle.

/tasks/3/row/ adresini aç: yalnızca Bankayı ara (tamamlandı), başlık yok.

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