רשימה כ-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)אתגר
קלהצג את כל המשימות כ-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 אונליין