startapp start restful how framework example create con python django rest django-views django-rest-framework

python - start - Django REST Framework: diferencia entre vistas y conjuntos de vistas?



rest framework django 2 (1)

ViewSets y los Routers son herramientas simples para acelerar la implementación de su API, si está apuntando a un comportamiento estándar y URL estándar.

Al usar ViewSet , no tiene que crear vistas separadas para obtener una lista de objetos y detalles de un objeto. ViewSet manejará por usted de manera consistente tanto en la lista como en los detalles.

El uso de Router conectará su ViewSet a una ViewSet "estandarizada" (no es estándar de ninguna manera global, solo una estructura que implementaron los creadores del marco de Django REST) ​​de las URL. De esa manera, no tiene que crear sus patrones de URL a mano y tiene la garantía de que todas sus direcciones URL son coherentes (al menos en la capa de la que es responsable el Router ).

Parece que no mucho, pero cuando implementes una gran api donde tengas muchos y muchos patrones y vistas de ViewSets , el uso de ViewSets y Routers hará una gran diferencia.

Para una mejor explicación: este es el código que usa ViewSets y Routers:

views.py:

from snippets.models import Article from rest_framework import viewsets from yourapp.serializers import ArticleSerializer class ArticleViewSet(viewsets.ModelViewSet): queryset = Article.objects.all() serializer_class = ArticleSerializer

urls.py:

from django.conf.urls import url, include from yourapp import views from rest_framework.routers import DefaultRouter router = DefaultRouter() router.register(r''articles'', views.ArticleViewSet) urlpatterns = [ url(r''^'', include(router.urls)), ]

Y resultado equivalente usando vistas normales y sin enrutadores:

vistas.py

from snippets.models import Article from snippets.serializers import ArticleSerializer from rest_framework import generics class ArticleList(generics.ListCreateAPIView): queryset = Article.objects.all() serializer_class = ArticleSerializer class ArticleDetail(generics.RetrieveUpdateDestroyAPIView): queryset = Article.objects.all() serializer_class = ArticleSerializer

urls.py

from django.conf.urls import url, include from yourapp import views urlpatterns = [ url(r''articles/^'', views.ArticleList.as_view(), name="article-list"), url(r''articles/(?P<pk>[0-9]+)/^'', views.ArticleDetail.as_view(), name="article-detail"), ]

Puede ser relevant .

¿Cuál es la diferencia entre vistas y conjuntos de vistas ? ¿Y qué pasa con enrutador y urlpatterns ?