Как переписать мой код с помощью Routers? Django rest framework

У меня есть этот REST API:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('users/', UserViewSet.as_view({'get': 'list', 
                                        'post': 'create', 
                                        'delete': 'delete'})),
    path('users/<uuid:pk>/video/', UserViewSet.as_view({'post': 'video'}))
]

Как я могу переписать это с помощью маршрутизаторов?

По умолчанию маршрутизатор с методом регистрации создает API, отличный от текущего.

Или, может быть, в данной ситуации правильнее было бы использовать мой код?

предполагая, что UserViewSet действительно является набором представлений, вы можете использовать маршрутизатор по умолчанию restframework для регистрации маршрутизатора для /users/, а затем добавить действие для обработки маршрута /video/ из этого набора представлений.

urls.py

from rest_framework.routers import DefaultRouter

router = DefaultRouter()
router.register(r'users/', UserViewSet, basename='users')

urlpatterns = [
    path('admin/', admin.site.urls),
]

urlpatterns += router.urls

viewsets.py

from rest_framework.viewsets import GenericViewSet
from rest_framework.mixins import (
    CreateModelMixin, RetrieveModelMixin, DestroyModelMixin, ListModelMixin
)
from rest_framework.decorators import action
from rest_framework.parsers import MultiPartParser

class UserViewSet(CreateModelMixin, RetrieveModelMixin, DestroyModelMixin, ListModelMixin, GenericViewSet):
    # serializer class
    # queryset
    # permissions

    @action(methods=['post'], parser_classes=(MultiPartParser,), detail=True)
    def video(self, request, pk=None, *args, **kwargs):
        # Implementation to upload a video
Вернуться на верх