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 her satır önce bir sözlüğe dönüştürülmelidir. values() QuerySet yöntemi bunu, tam olarak belirttiğiniz anahtarlarla yapar. Bir kitapçının Book modeli için:

>>> 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 döndürür.

Son olarak, JsonResponse kendisine safe=False iletilmediği sürece yalnızca bir sözlük alır. Bu seçenek 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 listeleyin:

  • Her görev için bir nesne içeren ve id, title, done ve priority anahtarlarına sahip bir JSON listesi döndüren task_list görünümü.
  • task_list adı verilen "api/tasks/" yolu.

Run'a basın: önizleme /api/tasks/ adresini açar ve üç görevi 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