gpt4 book ai didi

django - 当 drf 使用 ListAPIView 返回空查询集时如何返回 404

转载 作者:行者123 更新时间:2023-12-02 01:07:34 27 4
gpt4 key购买 nike

class listapiview(ListAPIView):

queryset = testobj.objects.all()
serializer_class = testobjSerializer
def get_queryset(self):
queryset = testobj.objects.all()
build_id = self.request.query_params.get('id', None)
if id is not None:
queryset = queryset.filter(id=id)
return queryset

我刚刚将一些 View 从 APIView 重写为 ListAPIView,它破坏了我的一些单元测试,因为空查询集仍然返回 200。我想找出返回 404 的最佳方法(或任何适当的错误代码)在此)使用我的示例。

我尝试添加:

if queryset:
return queryset
else:
return Response(status=status.HTTP_404_NOT_FOUND)

但收到分页器错误:

TypeError: object of type 'Response' has no len()

最佳答案

引发异常而不是返回响应

django Rest框架在其exception模块中有多个预定义的异常,例如NotFound异常。您可以通过从异常中导入来添加它

from rest_framework.exceptions import NotFound 

并通过以下代码修改您的get_queryset逻辑

if queryset:
return queryset
else:
raise NotFound()

关于django - 当 drf 使用 ListAPIView 返回空查询集时如何返回 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49738795/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com