Lista jako JSON
Część sekcji API JSON ścieżki Django w Coddy. Lekcja 2 z 19.
Programy potrzebują jednego adresu URL, który zawiera listę wszystkich zadań. Obiektu Task nie można umieścić w JSON w niezmienionej postaci, dlatego każdy wiersz trzeba najpierw zamienić na słownik. Metoda QuerySet values() robi to, używając dokładnie tych kluczy, które podasz. W modelu Book księgarni:
>>> Book.objects.values("title", "year")
<QuerySet [{'title': 'Dune', 'year': 1965}, {'title': 'Emma', 'year': 1815}]>To nadal QuerySet, którego zapisujący JSON nie rozpoznaje. list() wykonuje zapytanie i zwraca zwykłą listę.
Na koniec JsonResponse przyjmuje tylko słownik, chyba że przekażesz safe=False. Lista bez tego argumentu powoduje wyjątek TypeError:
return JsonResponse(["red", "green", "blue"], safe=False)Wyzwanie
ŁatwyWyświetl każde zadanie jako JSON.
- W pliku
tasks/views.pydodaj widoktask_list, który zwraca listę JSON zawierającą po jednym obiekcie dla każdego zadania, z kluczamiid,title,doneipriority. - W pliku
tasks/urls.pydodaj trasę"api/tasks/"o nazwietask_list.
Naciśnij „Uruchom”: otworzy się podgląd /api/tasks/ z listą zadań Buy milk, Write the report i Call the bank.
Spróbuj swoich sił
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)
Wszystkie lekcje w sekcji API JSON
2Odczytywanie żądań
Filtrowanie za pomocą zapytaniaTworzenie za pomocą POST5Projekt: Porządkowanie zadań
Projekt: PriorytetyProjekt: Usuwanie ukończonych zadańPoćwicz samodzielnie: Edytor online Django