Список в формате JSON
Часть раздела JSON API путешествия по 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)Задание
ЛегкоПеречислите все задачи в формате 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)
Все уроки раздела JSON API
Потренируйтесь самостоятельно: Песочница Django