Menu
CoddyTech

Lista jako JSON

Część sekcji API JSON ścieżki Django w Coddy. Lekcja 2 z 19.

Programy potrzebują jednego adresu URL, który wyświetla wszystkie zadania. Obiektu Task nie można bezpośrednio umieścić w JSON, więc najpierw każdy wiersz musi zostać zamieniony 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 błąd TypeError:

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

Wyzwanie

Łatwy

Wyświetl każde zadanie w formacie JSON:

  • Widok task_list, który zwraca listę JSON, po jednym obiekcie na zadanie, zawierającym klucze id, title, done i priority.
  • Ścieżka "api/tasks/" o nazwie task_list.

Naciśnij Run: otworzy się podgląd /api/tasks/ i wyświetli trzy zadania.

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

Poćwicz samodzielnie: Edytor online Django