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 incluirse tal cual en JSON, así que primero cada fila debe convertirse en un diccionario. El método values() de QuerySet 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}]>Sigue siendo un QuerySet, que el escritor de 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. Si no lo haces, una lista genera TypeError:
return JsonResponse(["red", "green", "blue"], safe=False)Desafío
FácilEnumera todas las tareas como JSON:
- Una vista
task_listque devuelve una lista JSON, un objeto por tarea con las clavesid,title,doneypriority. - La ruta
"api/tasks/", llamadatask_list.
Pulsa Run: la vista previa abre /api/tasks/ y muestra las tres tareas.
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