Menu
CoddyTech

JSON Olarak Bir Liste

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

Programların tüm görevleri listeleyen tek bir URL'ye ihtiyacı vardır. Bir Task olduğu gibi JSON'a aktarılamaz; bu nedenle önce her satır bir sözlüğe dönüştürülmelidir. QuerySet'in values() yöntemi bunu, tam olarak belirttiğiniz anahtarlarla yapar. Bir kitapçının Book modeli üzerinde:

>>> Book.objects.values("title", "year")
<QuerySet [{'title': 'Dune', 'year': 1965}, {'title': 'Emma', 'year': 1815}]>

Bu hâlâ JSON yazıcısının tanımadığı bir QuerySet'tir. list() sorguyu çalıştırır ve düz bir liste verir.

Son olarak, JsonResponse yalnızca bir sözlük kabul eder; ancak safe=False iletirseniz bu kural geçerli olmaz. Bu olmadan bir liste TypeError hatasına yol açar:

return JsonResponse(["red", "green", "blue"], safe=False)
challenge icon

Görev

Kolay

Her görevi JSON olarak listele.

  1. tasks/views.py dosyasında, her görev için id, title, done ve priority anahtarlarını içeren bir nesneyle birlikte JSON listesi döndüren task_list görünümünü ekle.
  2. tasks/urls.py dosyasında, "api/tasks/" yolunu task_list adıyla ekle.

Çalıştır'a bas: önizleme /api/tasks/ adresinde açılır ve Süt al, Raporu yaz ve Bankayı ara görevlerini listeler.

Kendin dene

from django.http import JsonResponse
from django.shortcuts import render

from .models import Task


def home(request):
    return render(request, "tasks/home.html", {"tasks": Task.objects.all()})


def stats(request):
    data = {
        "total": Task.objects.count(),
        "done": Task.objects.filter(done=True).count(),
    }
    return JsonResponse(data)

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

Kendi başına pratik yap: Django playground