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.

  1. בקובץ tasks/views.py, הוסיפו תצוגה בשם task_list שמחזירה רשימת JSON, אובייקט אחד לכל משימה, עם המפתחות id,‏ title,‏ done ו-priority.
  2. בקובץ tasks/urls.py, הוסיפו את הנתיב "api/tasks/" בשם task_list.

לחצו על „הפעלה”: התצוגה המקדימה נפתחת בכתובת /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 אונליין