Menu
CoddyTech

רשימה כ-JSON

חלק מהיחידה ממשקי API של JSON במסלול ה-Django של Coddy. שיעור 2 מתוך 19.

תוכניות צריכות כתובת URL אחת שמפרטת את כל המשימות. אי אפשר להכניס Task ל-JSON כפי שהוא, ולכן קודם צריך להפוך כל שורה למילון. המתודה values() של QuerySet עושה זאת, עם המפתחות המדויקים שציינת. במודל Book של חנות ספרים:

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

זו עדיין QuerySet, שכותב ה-JSON אינו מכיר. list() מריצה את השאילתה ומחזירה רשימה רגילה.

לבסוף, JsonResponse מקבלת רק מילון, אלא אם מעבירים לה safe=False. רשימה בלעדיו גורמת ל-TypeError:

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

אתגר

קל

הצג את כל המשימות כ-JSON:

  • תצוגה בשם task_list שמחזירה רשימת JSON, אובייקט אחד לכל משימה, עם המפתחות id, title, done ו-priority.
  • הנתיב "api/tasks/", בשם task_list.

לחץ על Run: התצוגה המקדימה פותחת את /api/tasks/ ומציגה את שלוש המשימות.

נסו בעצמכם

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)

כל השיעורים ביחידה ממשקי API של JSON

תרגלו בעצמכם: Django אונליין