• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

559
Vistas
generics vs viewset en django rest framework, ¿cómo preferir cuál usar?

¿Cómo preferir cuál de los genéricos y el conjunto de vistas usar? en otras palabras, ¿cuándo debo usar genéricos y cuándo debo usar viewset para construir api? Sé que hacen lo mismo, pero viewset tiene enrutadores, entonces, ¿en qué situación los genéricos son mejores que viewset?

over 3 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Mi regla de oro para esto es usar genéricos siempre que tenga que anular los métodos predeterminados para lograr diferentes especificaciones de las vistas de lista y detalles.

Por ejemplo, cuando tiene diferentes clases de serializador para enumerar sus recursos y para recuperar los detalles de un recurso por id, considero que usar genéricos es una mejor opción, ya que probablemente la lógica de estos dos puntos finales evolucionará por separado. Tenga en cuenta que es una buena práctica mantener diferentes lógicas desacopladas.

Cuando su punto final es muy simple y no necesita personalizar la lógica entre las operaciones de lista/creación y recuperación/actualización/eliminación, puede usar el conjunto de vistas, pero teniendo en cuenta que puede ser bueno separarlo en dos vistas en caso de que estas operaciones La lógica comienza a crecer en diferentes caminos.

over 3 years ago · Santiago Trujillo Denunciar

0

Son diferentes, vamos a ver.

DRF tiene dos sistemas principales para manejar vistas:

  1. APIView : proporciona un controlador de métodos para los verbos http : get , post , put , patch y delete .
  2. ViewSet : esta es una abstracción sobre APIView, que proporciona acciones como métodos:
    • list : solo lectura, devuelve múltiples recursos (verbo http: get ). Devuelve una lista de dictados.
    • retrieve : solo lectura, recurso único (verbo http: get , pero esperará una identificación en la URL). Devuelve un único dict.
    • create : crea un nuevo recurso (verbo http: post )
    • update/partial_update : edita un recurso (verbos http: put/patch )
    • destroy : elimina un recurso (verbo http: delete )

Ambos se pueden usar con direcciones URL normales de Django.

Debido a las convenciones establecidas con las acciones , ViewSet también tiene la capacidad de asignarse a un enrutador , lo que es realmente útil.

Ahora, ambas vistas tienen accesos directos , estos accesos directos le brindan una implementación simple lista para usar.

GenericAPIView : para APIView , esto le brinda accesos directos que se asignan de cerca a sus modelos de base de datos. Agrega el comportamiento comúnmente requerido para la lista estándar y las vistas detalladas. Le da algunos atributos como serializer_class , también da pagination_class , filter_backend , etc.

GenericViewSet : hay muchos GenericViewSet, el más común es ModelViewSet . Heredan de GenericAPIView y tienen una implementación completa de todas las acciones : list , retrieve , destroy , updated , etc. Por supuesto, también puede elegir algunas de ellas, leer los documentos .

Entonces, para responder a su pregunta: DRY , si está haciendo algo realmente simple, con un ModelViewSet debería ser suficiente, incluso redefinir y llamar a super también es suficiente. Para casos más complejos, puede optar por clases de nivel inferior.

¡Espero haberte ayudado!

over 3 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda