Resumen

Aprende a construir una vista basada en funciones con Django Rest Framework para listar pacientes en JSON. Con un serializer, una query simple y el decorador ApiView, tendrás un endpoint limpio, validado y listo para usarse en frontend o pruebas rápidas.

¿Cómo listar pacientes con un serializer en Django Rest Framework?

Crear una vista para devolver datos en JSON es directo cuando usamos Response y un serializer. El flujo es: consultar la base de datos, serializar la lista y responder en un formato correcto.

  • Importar el serializer de pacientes.
  • Consultar la base de datos con Patient.objects.all().
  • Serializar una lista con many=True.
  • Responder con Response(serializer.data).

Ejemplo de estructura en views.py:

# views.py
from rest_framework.response import Response
from rest_framework.decorators import ApiView
from .serializers import PatientSerializer
from .models import Patient

@ApiView(['get'])
def ListPatients(request):
    patients = Patient.objects.all()
    serializer = PatientSerializer(patients, many=True)
    return Response(serializer.data)

Puntos clave que refuerzan buenas prácticas:

  • Variables en minúscula: patients, serializer.
  • many=True indica que el serializer debe procesar cada ítem de la lista.
  • La clase Response de DRF devuelve un JSON correctamente formateado y puede configurarse para otros formatos como XML.

¿Qué parámetros clave usa el serializer?

  • Objeto o lista a serializar: el queryset de pacientes.
  • many=True: esencial cuando se serializa un listado.
  • Acceso a datos serializados: serializer.data.

¿Para qué sirve el decorador ApiView y el método get?

El decorador ApiView habilita compatibilidad DRF sobre una vista basada en función y permite fijar qué métodos HTTP acepta.

  • Limitar el endpoint a GET: evita usos no deseados como POST en la misma ruta.
  • Recibir request aunque no se use aún: prepara futuras mejoras.
  • DRF añade capacidades extra en la interfaz de exploración: options, get y cambio de formato rápido.

Detalles que facilitan el testeo y lectura:

  • La interfaz navegable de DRF muestra headers y la estructura del JSON.
  • Cambiar a solo JSON es posible con el selector de formato (útil para frontend).
  • Observación importante: las fechas se ven como cadena, aunque en el model de Python sean DateTime.

¿Cómo publicar la URL y probar el endpoint en JSON?

Para usar la vista, crea la ruta en el archivo de URLs y ejecuta el servidor de desarrollo.

# urls.py
from django.urls import path
from patients import views

urlpatterns = [
    path('api-patients', views.ListPatients),
]

Ejecución y prueba:

  • Iniciar el servidor: manage.py runserver.
  • Visitar la ruta: api-patients.
  • Verás los campos de todos los pacientes en formato JSON.

Siguientes pasos propuestos:

  • Crear un endpoint con método POST para registrar un paciente.
  • Validar la entrada usando el serializer respecto al model.
  • Reutilizar la lógica de DRF para confirmar que los datos son válidos antes de guardar.

¿Ya implementaste el POST para crear pacientes con validación mediante serializer? Comparte el código en los comentarios y cuéntanos cómo te fue.