Aber wie zu Routeransichten hinzufügen, die aus rest_framework.generics Paket sind?
Sie nicht. ViewSets fügt ein paar Kompatibilitätslayer zu rest_framework.generics
hinzu, um mit Routern zu arbeiten.
Sollte ich Custom Router (http://www.django-rest-framework.org/api-guide/routers/#custom-routers) erstellen? Was ist die beste Praxis?
Wenn Sie eine nicht sichtbare Ansicht verwenden möchten, müssen Sie die normale Django-URL schreiben.
Mein Gefühl ist die echte Frage ist ganz anders und würde etwas wie "Wie beschränke ich Viewset auf einige Aktionen nur".
In diesem Fall wird die Erklärung des ModelViewSet
liefert die Antwort:
class ViewSet(ViewSetMixin, views.APIView):
"""
The base ViewSet class does not provide any actions by default.
"""
pass
class GenericViewSet(ViewSetMixin, generics.GenericAPIView):
"""
The GenericViewSet class does not provide any actions by default,
but does include the base set of generic view behavior, such as
the `get_object` and `get_queryset` methods.
"""
pass
class ModelViewSet(mixins.CreateModelMixin,
mixins.RetrieveModelMixin,
mixins.UpdateModelMixin,
mixins.DestroyModelMixin,
mixins.ListModelMixin,
GenericViewSet):
"""
A viewset that provides default `create()`, `retrieve()`, `update()`,
`partial_update()`, `destroy()` and `list()` actions.
"""
pass
Wie Sie sehen können, können Sie die ModelViewSet
spezialisieren, indem sie die erforderlichen Mixins Auswahl und Erben von GenericViewSet
.
Noch Urlmuster sind die besten. Frage ist mir durch Überdenken aufgefallen: P – pmoniq