Menu
CoddyTech

قائمة بصيغة JSON

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

تحتاج البرامج إلى عنوان URL واحد يسرد كل مهمة. لا يمكن وضع Task في JSON كما هو، لذا يجب أولًا تحويل كل صف إلى قاموس. تنفّذ طريقة مجموعة الاستعلامات values() ذلك، باستخدام المفاتيح التي تحددها بالضبط. في نموذج Book لمتجر كتب:

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

لكن الناتج يظل مجموعة استعلامات، لا يعرف كاتب 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/ وتعرض Buy milk وWrite the report وCall the bank.

جرّب بنفسك

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