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)Görev
KolayHer görevi JSON olarak listeleyin:
- Her görev için bir nesne içeren ve
id,title,donevepriorityanahtarlarına sahip bir JSON listesi döndürentask_listgörünümü. task_listadı 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