Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Sprint 8 - Clase 5 VIEWSETS Y ROUTERS
Sprint 8 - Clase 5 VIEWSETS Y ROUTERS
DRF incluye una abstracción para tratar con conjuntos de vistas, que le permite al
desarrollador concentrarse en modelar el estado y las interacciones de la API, y
dejar que la construcción de URL se maneje automáticamente, según convenciones
comunes.
ViewSet son casi lo mismo que las clases View, excepto que proporcionan
operaciones como retrieve o update, y no manejadores de métodos como get o put.
Una clase ViewSet solo está vinculada a un conjunto de controladores de métodos
en el último momento, cuando se instancia en un conjunto de vistas, generalmente
mediante el uso de una clase Router que maneja las complejidades de definir la
configuración de Url.
Por lo tanto, el objetivo de usar viewsets y router, es reducir la cantidad de código
y mejorar su legibilidad.
REFACTORIZAR VISTAS
class UserViewSet(viewsets.ReadOnlyModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
class LibroViewSet(viewsets.ModelViewSet):
queryset = Libro.objects.all()
serializer_class = LibroSerializer
permission_classes = [permissions.IsAuthenticatedOrReadOnly]
Esta vez hemos usado la clase ModelViewSet para obtener el conjunto completo de
operaciones de lectura y escritura predeterminadas.
Usando Routers
Debido a que estamos usando clases ViewSet en lugar de clases View, en realidad
no necesitamos diseñar la URL conf. Las convenciones para conectar recursos en
vistas y URL se pueden manejar automáticamente, utilizando una clase de Router .
Todo lo que necesitamos hacer es registrar los conjuntos de vistas apropiados con
un enrutador y dejar que haga el resto.
También modificamos el archivo de urls general diciendo que incluya el archivo urls
de libros. De esta forma mantenemos separadas las urls por aplicación.
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('libros.urls')),
]
Registrar los conjuntos de vistas con el enrutador es similar a proporcionar un
patrón de URL. Incluimos dos argumentos: el prefijo de URL para las vistas y el
propio conjunto de vistas.