мой django api view.py не показывает список и не создает новый список

Привет, разработчик. Я новичок в django, я следую учебному пособию, в котором он создает конкретные классы представлений и преобразует их в классы viewset.ModelViewSet. и он использует маршрутизатор по умолчанию в urls.py

мое приложение показывает список статей с набором представлений, но не выполняет метод публикации с ArticleViewSet(viewset.ModelViewSet), поэтому я смущен этим, чтобы использовать viewset Это мой файл api/view.py, в котором я использую конкретные классы представлений, в которых я использую конкретные классы представлений **

class ArticleListView(ListAPIView):
       queryset = Articles.objects.all()
       serializer_class = ArticleSerializer

class ArticleDetailView(RetrieveAPIView):
      queryset = Articles.objects.all()
      serializer_class = ArticleSerializer


class ArticleUpdateView(UpdateAPIView):
      queryset = Articles.objects.all()
      serializer_class = ArticleSerializer

class ArticleDeleteView(DestroyAPIView):
      queryset = Articles.objects.all()
      serializer_class = ArticleSerializer
   
class ArticleCreateView(CreateAPIView):
    permission_classes = []
    #parser_classes = (FormParser,MultiPartParser, FileUploadParser )
    serializer_class = ArticleSerializer
    queryset = Articles.objects.all()
    #serializer = ArticleSerializer(queryset, many=True)

    def post(self, request):
        serializer = ArticleSerializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        serializer.save()
        return Response(True, status=200)


# class ArticleViewSet(viewsets.ModelViewSet):
#     parser_classes = (FormParser,MultiPartParser, FileUploadParser )
#     serializer_class = ArticleSerializer
#     queryset = Articles.objects.all()
    

**это мои шаблоны URL api/url.py в приложении для статей **

urlpatterns = [
       path('articles', ArticleListView.as_view() name=""),
       path('xyz', ArticleCreateView.as_view()),
       path('<pk>', ArticleDetailView.as_view()),
       path('<pk>/update/', ArticleUpdateView.as_view()),
       path('<pk>/delete/', ArticleDeleteView.as_view())
    ]
#from articles.api.views import  *
# from rest_framework.routers import DefaultRouter

# router = DefaultRouter()
# router.register(r'', ArticleViewSet, basename='articles')
# urlpatterns = router.urls

** Это мои шаблоны URL-адресов urls.py в папке настроек **

urlpatterns = [
    path('api-auth/', include('rest_framework.urls', namespace='rest_framework')),
    path('rest-auth/', include('rest_auth.urls')),
    path('rest-auth/registration/', include('rest_auth.registration.urls')),
    path('admin/', admin.site.urls),
    path('accounts/', include('allauth.urls')),
    path('api/', include('articles.api.urls')),

    
    

]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)


person Muhammad Abdullah    schedule 18.10.2020    source источник


Ответы (1)


Я не уверен, я сделал только быстрый поиск, и ваша информация не была полной, но я думаю, что вы должны определить следующие функции, чтобы дать функциональность вашему viewSet.

    """
    Example empty viewset demonstrating the standard
    actions that will be handled by a router class.

    If you're using format suffixes, make sure to also include
    the `format=None` keyword argument for each action.
    """

    def list(self, request):
        pass

    def create(self, request):
        pass

    def retrieve(self, request, pk=None):
        pass

    def update(self, request, pk=None):
        pass

    def partial_update(self, request, pk=None):
        pass

    def destroy(self, request, pk=None):
        pass

или вы можете написать свои собственные наборы представлений, а не перезаписывать их

class UserViewSet(viewsets.ViewSet):
    """
    A simple ViewSet for listing or retrieving users.
    """
    def list(self, request):
        queryset = User.objects.all()
        serializer = UserSerializer(queryset, many=True)
        return Response(serializer.data)

    def retrieve(self, request, pk=None):
        queryset = User.objects.all()
        user = get_object_or_404(queryset, pk=pk)
        serializer = UserSerializer(user)
        return Response(serializer.data)

более точную информацию можно найти в документации

person Alireza Bahrami    schedule 18.10.2020
comment
мой набор представлений, показывающий список, который работает, но я ищу создание, обновление и удаление - person Muhammad Abdullah; 18.10.2020
comment
вы можете перезаписать их функции, как указано в документации. и я думаю, что первый ответ достаточно ясен, чтобы помочь вам. - person Alireza Bahrami; 18.10.2020