Menu
CoddyTech

List sebagai JSON

Termasuk bagian API JSON dalam perjalanan Django di Coddy. Pelajaran 2 dari 19.

Program membutuhkan satu URL yang mencantumkan semua tugas. Task tidak bisa langsung dimasukkan ke JSON, jadi setiap baris harus diubah menjadi dictionary terlebih dahulu. Method values() dari QuerySet melakukan itu, dengan kunci yang persis kamu tentukan. Pada model Book milik toko buku:

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

Hasilnya masih berupa QuerySet, yang tidak dikenali oleh penulis JSON. list() menjalankan query dan menghasilkan list biasa.

Terakhir, JsonResponse hanya menerima dictionary kecuali kamu memberikan safe=False. List tanpa argumen itu akan memunculkan TypeError:

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

Tantangan

Mudah

Daftarkan setiap tugas sebagai JSON:

  • Sebuah view task_list yang mengembalikan list JSON, satu object untuk setiap tugas dengan kunci id, title, done dan priority.
  • Rute "api/tasks/", bernama task_list.

Tekan Jalankan: pratinjau membuka /api/tasks/ dan menampilkan tiga tugas.

Coba sendiri

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)

Semua pelajaran di API JSON

Latihan sendiri: Playground Django