Menu
CoddyTech

Eine Liste als JSON

Teil des Abschnitts JSON-APIs der Django-Journey von Coddy. Lektion 2 von 19.

Programme benötigen eine URL, die alle Aufgaben auflistet. Ein Task kann nicht unverändert in JSON übernommen werden, daher muss jede Zeile zuerst zu einem Wörterbuch werden. Die QuerySet-Methode values() erledigt das mit genau den Schlüsseln, die du angibst. Beim Book-Modell eines Buchladens:

>>> Book.objects.values("title", "year")
<QuerySet [{'title': 'Dune', 'year': 1965}, {'title': 'Emma', 'year': 1815}]>

Das ist immer noch ein QuerySet, das der JSON-Writer nicht kennt. list() führt die Abfrage aus und liefert eine einfache Liste zurück.

Zuletzt nimmt JsonResponse nur ein Wörterbuch entgegen, sofern du nicht safe=False übergibst. Eine Liste ohne diese Angabe löst TypeError aus:

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

Aufgabe

Einfach

Liste jede Aufgabe als JSON auf.

  1. Füge in tasks/views.py eine Ansicht task_list hinzu, die eine JSON-Liste zurückgibt, mit einem Objekt pro Aufgabe und den Schlüsseln id, title, done und priority.
  2. Füge in tasks/urls.py die Route "api/tasks/" mit dem Namen task_list hinzu.

Klicke auf „Ausführen“: Die Vorschau öffnet /api/tasks/ und listet Milch kaufen, den Bericht schreiben und bei der Bank anrufen auf.

Probier es selbst

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)

Alle Lektionen in JSON-APIs

Übe selbstständig: Django-Playground