- 1

Creación de APIs con Django REST Framework
01:38 - 2

APIs y JSON: Comunicación entre Servidores y Aplicaciones Web
09:42 - 3

Creación de APIs con Django REST Framework
09:48 - 4

Django REST: Funcionalidades y Ventajas al Crear APIs
02:54 - 5

Modelos y Serializadores en Django para DoctorApp
14:13 - 6

Uso de Serializadores en Vistas con Django REST Framework
05:50 - 7

Creación y modificación de pacientes en API REST con Django
19:08 - 8

CRUD de Recursos con Django REST Framework
06:06 - 9

Pruebas de APIs con Postman y Curl
05:48 - 10

Refactorización de Vistas: De Funciones a Clases en Django REST
17:01 - 11

Vistas Genéricas en Django: Detalle, Actualización y Eliminación
04:19 - 12

Documentación de APIs con DRF Spectacular y Swagger en Django
10:38
Creación de acciones personalizadas en Django REST Framework
Clase 14 de 21 • Curso de Django Rest Framework
Contenido del curso
Fundamentos de Django Rest Framework
Vistas y Endpoints
Serializadores Avanzados
Testing y Desempeño
Resumen
Al crear APIs en Django REST Framework, no solo trabajamos con URLs para recursos, sino también con acciones que permiten ejecutar operaciones específicas, como el pago de una tarjeta o, en este caso, gestionar las vacaciones de un doctor.
¿Cómo agregar un campo para controlar el estado de vacaciones en un modelo?
- En el modelo
Doctor, añadimos el campois_on_vacation, que será un campo booleano con valor predeterminadoFalse. - Creamos las migraciones con
manage.py makemigrationsy luego ejecutamosmigratepara aplicar los cambios en la base de datos.
¿Cómo crear una acción personalizada para activar o desactivar vacaciones?
- En los ViewSets de Django REST Framework, las acciones personalizadas se crean con el decorador
@action. Importamos el decorador desderest_framework.decorators. - Definimos un método llamado
toggle_vacationcon el decorador y especificamos que solo se permitirá el métodoPOST. - El decorador también necesita el parámetro
detail=Truepara que la acción se aplique a un recurso específico, como un doctor identificado por su ID en la URL.
¿Cómo implementar la lógica para alternar el estado de vacaciones?
- Utilizamos el método
get_object()del ViewSet para obtener el objetoDoctoractual. - La lógica alterna entre el valor
TrueyFalsepara el campois_on_vacation. Si está enTrue, lo cambia aFalsey viceversa. - Se guarda el objeto
Doctory se retorna una respuesta utilizandoResponsepara informar el estado actualizado.
¿Cómo mejorar la idempotencia y claridad del endpoint?
- En lugar de alternar entre
TrueyFalse, creamos dos acciones separadas: una para activar vacaciones (set_on_vacation) y otra para desactivarlas (set_off_vacation). - Esto asegura que cada petición
POSTtenga un comportamiento predecible, lo que mejora la idempotencia del endpoint.
¿Cómo ajustar la URL de la acción para mejorar la legibilidad?
- Las URLs generadas a partir del nombre del método pueden tener guiones bajos, lo cual no es ideal para SEO y legibilidad. Usamos el parámetro
url_pathdentro del decorador@actionpara definir URLs con guiones, por ejemplo,set-on-vacation.
¿Cómo probar las acciones personalizadas?
- Desde la interfaz de Django REST Framework, probamos las acciones enviando peticiones
POSTa las URLs generadas. - Verificamos que los doctores puedan ser marcados como en vacaciones o no, y que el campo
is_on_vacationcambie correctamente en la base de datos.
¿Cómo replicar este proceso para otros recursos?
- Siguiendo este patrón, podemos crear acciones para otros recursos. Por ejemplo, un paciente puede necesitar obtener un reporte médico en formato JSON, lo cual sería una acción personalizada en el ViewSet de
Patient.