【问题标题】:Why am getting empty array in fetiching data using axios in react js and in urls?为什么在 react js 和 url 中使用 axios 获取数据时得到空数组?
【发布时间】:2020-11-08 12:41:55
【问题描述】:

我为文章模型创建了一个视图,并且我的数据库中有数据,但是当我继续访问 url 时,它显示的是空数组 我下面的代码 view.py

class ArticleView(RetrieveAPIView, RetrieveUpdateAPIView, RetrieveDestroyAPIView):
    serializer_class = ArticleSerializer
    permission_classes = [AllowAny]
    pagination_class = ArticleSizeLimitPagination

    def get_queryset(self):
        return Article.objects.filter().order_by('-updated_on')
        def get_object(self):
        try:
            return Article.objects.get(id=self.request.data['id'], is_deleted=False)
        except Exception:
            return None

    def perform_create(self, serializer):
        return serializer.save(user=self.request.user)

    def destroy(self, request, *args, **kwargs):
        try:
            instance = self.get_object()
            instance.is_deleted = True
            instance.save()
            return Response(data='delete success')
        except Http404:
            return Response(status=status.HTTP_204_NO_CONTENT)

urls.py

urlpatterns = [
    path('', ArticleView.as_view()),
    path('<uuid:pk>/', ArticleView.as_view()),
]

当我运行 url 时

HTTP 200 OK
Allow: GET, PUT, PATCH, DELETE, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "sub_title": "",
    "upvote": null,
    "title": ""
}

我哪里做错了? RetrieveAPIView 的 def 函数有问题吗?

【问题讨论】:

    标签: django django-models django-rest-framework django-views


    【解决方案1】:

    您使用选定的 mixin 创建了一个视图。您将能够获得一个实例、更新或删除。这是你想要的吗?这里有可用的 mixin 列表:DRF docs

    当您在浏览器中打开 URL 时,您可能会获得 DRF 可浏览 API。它将向您展示与端点交互的精美表单。如果您想从端点获取文章,您应该提供带有 id 的 URL(pk(其中 pk 是主键))。

    您的网址看起来不对。请尝试:

    from rest_framework.routers import DefaultRouter
    router = DefaultRouter()
    router.register(
        r"articles",
        ArticleView
    )
    urlpatterns = [
        url(r"/", include(router.urls)),
    ]
    

    我建议您使用 ModelViewSet 而不是从 mixins 构建视图。它应该更容易。

    class ArticleView(ModelViewSet):
    

    请使其适用于 ModelViewSet(更简单的解决方案),然后通过定义 mixins 尝试使用更难的解决方案来缩小范围。

    【讨论】:

      猜你喜欢
      • 2020-08-21
      • 2019-11-24
      • 1970-01-01
      • 2021-10-28
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      • 2021-10-16
      • 2018-01-31
      相关资源
      最近更新 更多