Ş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.
Görev
OrtaYeni /tasks/ sayfasındaki tek bir satırı tek başına sun.
tasks/list.htmldosyasında, döngüdeki<li>öğesinitask-rowadlı birinlineparçalı şablon yap; böylece/tasks/tüm satırları göstermeye devam eder.tasks/views.pydosyasınatask_row(request, pk)ekle: yalnızca bu parçalı şablonu,taskdeğerini ileterek görüntüle veya Django'nun 404 sayfasını göster.tasks/urls.pydosyasına"tasks/<int:pk>/row/"yolunutask_rowadı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>
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