No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Creación y Uso de Viewsets y Routers en Django REST Framework

13/21
Recursos

Los Viewsets en Django REST Framework nos ayudan a simplificar la creación de vistas al reutilizar una clase que agrupa el código necesario para manejar diferentes operaciones sobre un recurso, como listar, crear, actualizar y eliminar. Al integrarlos con los routers, evitamos la necesidad de definir cada URL manualmente, ya que el router se encarga de generar todas las rutas de manera automática.

¿Qué son los Viewsets y cómo funcionan?

  • Un Viewset es una clase reutilizable que agrupa todas las operaciones que se suelen realizar con una vista (lista, detalle, creación, actualización, eliminación).
  • Al usar Viewsets, reducimos la cantidad de clases y URLs que necesitamos escribir, ya que todas las operaciones se manejan desde un solo lugar.
  • En lugar de crear múltiples clases, un solo Viewset puede manejar todas las acciones requeridas para un recurso.

¿Cómo se crea un Viewset?

  • Importamos ModelViewSet desde rest_framework.viewsets.
  • Definimos una clase que hereda de ModelViewSet, como DoctorViewset.
  • Asignamos un QuerySet y un Serializer para definir cómo se gestionará la información y cómo será serializada.
from rest_framework import viewsets
from .serializers import DoctorSerializer
from .models import Doctor

class DoctorViewset(viewsets.ModelViewSet):
    queryset = Doctor.objects.all()
    serializer_class = DoctorSerializer

¿Cómo se registran los Viewsets con los routers?

  • Los routers simplifican la creación de URLs, ya que generan las rutas automáticamente al registrar un Viewset.
  • Usamos DefaultRouter de Django REST Framework para registrar el Viewset y generar las rutas correspondientes.
from rest_framework.routers import DefaultRouter
from .viewsets import DoctorViewset

router = DefaultRouter()
router.register(r'doctors', DoctorViewset)
urlpatterns = router.urls

¿Cómo se prueban los Viewsets?

  • Una vez registrado el Viewset, podemos verificar las URLs generadas ejecutando el servidor y accediendo a la API.
  • Las operaciones de creación, actualización y eliminación de un recurso se pueden realizar directamente en las URLs generadas automáticamente.

¿Qué ventajas ofrecen los Viewsets y los routers?

  • Evitamos la repetición de código al gestionar varias operaciones con una sola clase.
  • Los routers generan automáticamente las rutas necesarias para cada recurso, lo que facilita su uso y mantenimiento.
  • Las URLs generadas tienen nombres claros, lo que permite su uso programático dentro del código.

Aportes 9

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Dejo este **JSON** para que prueben a los doctores: ```js { "first_name": "Fernando", "last_name": "Martinez", "qualification": "Profesional", "contact_number": "1234567", "email": "[email protected]", "address": "123 Main St, Montevideo", "biography": "Fernando is a professional doctor with years of experience in cardiology." } ```
Y la abstracción continua…..
Joderrrr esto es demasiado para alguien que viene de crear apis robustas con node JS, es demasiada abstracción 🥰
ufff esto.esta muy bueno!!! nunca había escuchado de los ViewSet
No conocia sobre esto, esta muy interesante
Un view set en Django Rest Framework es una clase que agrupa la lógica de varias vistas relacionadas en una sola unidad. En lugar de definir métodos HTTP individuales como GET o POST, un view set proporciona acciones como listar, crear, actualizar y eliminar, simplificando la gestión de las operaciones CRUD en una API. Esto no solo reduce la duplicación de código, sino que también mejora la organización y mantenibilidad del proyecto.
la documentacion tambien se aplica en swagger si se hace de esta forma ```python class PatientViewSet(ModelViewSet): """ Endpoints to manage patients """ serializer_class = PatientSerializer queryset = Patient.objects.all()py ```
Vengo de trabajar con laravel y este nivel de abstracción es bastante util, para no estar escribiendo codigo innecesario, para tablas catalogo y procesos no complejos ayuda un bastante
¿Al usar viewsets, que pasa entonces con la lógica de views (doctors)? ya que el CRUD alli se repite, se puede eliminar?![](https://static.platzi.com/media/user_upload/image-fc3c2958-8655-4e8f-8d2e-58f482428d35.jpg)