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 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)
challenge icon

Wyzwanie

Łatwy

Wyświetl każde zadanie jako JSON.

  1. W pliku tasks/views.py dodaj widok task_list, który zwraca listę JSON zawierającą po jednym obiekcie dla każdego zadania, z kluczami id, title, done i priority.
  2. W pliku tasks/urls.py dodaj trasę "api/tasks/" o nazwie task_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

Poćwicz samodzielnie: Edytor online Django