Cómo devolver una respuesta JSON en Django

JSON es un formato mínimo y legible para estructurar datos. Se utiliza principalmente para transmitir datos entre un servidor y una aplicación web, como alternativa a XML. Las API, las respuestas ligeras, etc.son usos básicos de una cadena JSON.

En este artículo, aprenderá cómo devolver una respuesta JSON correctamente en todas las versiones de Django.

Django >= 1.7

Para  las  versiones más recientes de django, puede usar la implementacion de JsonResponse en el django.httppaquete, lo que le facilita las cosas, ya que no necesita proporcionar ningún tipo de contenido u otra información, solo tus datos.

from django.http import JsonResponse

def index(request):
    responseData = {
        'id': 4,
        'name': 'Test Response',
        'roles' : ['Admin','User']
    }

    return JsonResponse(responseData)

Como hace muchos frameworks web, devolver una "clase" como respuesta es el método preferido por la mayoría de los desarrolladores.

Django <1.7

Para versiones anteriores de django, debes devolver un objeto HttpResponse con el tipo de contenido específico de JSON como segundo parámetro.

import json
# para versiones anteriores (and using python < 2.7)
# desde django.utils import simplejson
# y cambie json.dumps por simplejson.dumps
from django.http import HttpResponse

def index(request):
    responseData = {
        'id': 4,
        'name': 'Test Response',
        'roles' : ['Admin','User']
    }

    return HttpResponse(json.dumps(responseData), content_type="application/json")

Nota: aún puedes usar este método si lo desea en las versiones más recientes.

Como la clase JsonResponse no existe, necesitará usar la forma de la vieja escuela, no tan rápida de escribir pero funcional.

El resultado de ambas respuestas será:

{  
   "id":4,
   "name":"Test Response",
   "roles":[  
      "Admin",
      "User"
   ]
}

Como era de esperarse. Que te diviertas ❤️!

Esto podria interesarte

Conviertete en un programador más sociable