Menu
CoddyTech

قائمة بصيغة JSON

جزء من قسم واجهات API بصيغة JSON في رحلة Django على Coddy. الدرس 2 من 19.

تحتاج البرامج إلى عنوان URL واحد يسرد كل مهمة. لا يمكن وضع Task في JSON كما هو، لذا يجب أولاً تحويل كل صف إلى قاموس. تنفّذ طريقة QuerySet المسماة values() ذلك، باستخدام المفاتيح التي تحددها بالضبط. في نموذج 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.

اضغط على تشغيل: تفتح المعاينة /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

تدرّب بنفسك: Playground لـ Django