Una lista como JSON
Parte de la sección API JSON del Journey de Django de Coddy. Lección 2 de 19.
Los programas necesitan una URL que enumere todas las tareas. Un Task no puede convertirse directamente en JSON, así que primero cada fila debe convertirse en un diccionario. El método del QuerySet values() hace eso, con exactamente las claves que nombres. En el modelo Book de una librería:
>>> Book.objects.values("title", "year")
<QuerySet [{'title': 'Dune', 'year': 1965}, {'title': 'Emma', 'year': 1815}]>Eso sigue siendo un QuerySet, que el escritor JSON no reconoce. list() ejecuta la consulta y devuelve una lista simple.
Por último, JsonResponse solo acepta un diccionario, a menos que pases safe=False. Una lista sin ese argumento genera TypeError:
return JsonResponse(["red", "green", "blue"], safe=False)Desafío
FácilIncluye todas las tareas como JSON.
- En
tasks/views.py, añade una vistatask_listque responda con una lista JSON, con un objeto por tarea y las clavesid,title,doneypriority. - En
tasks/urls.py, añade la ruta"api/tasks/"con el nombretask_list.
Pulsa «Ejecutar»: la vista previa abre /api/tasks/ y muestra Buy milk, Write the report y Call the bank.
Pruébalo tú mismo
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)
Todas las lecciones de API JSON
2Lectura de solicitudes
Filtrar con una consultaCrear con POST5Proyecto: Organizar el trabajo
Proyecto: PrioridadesProyecto: Borrar las tareas completadasPractica por tu cuenta: Playground de Django