【发布时间】:2018-04-09 17:49:50
【问题描述】:
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
我只是将一些视图从 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()
【问题讨论】:
-
为什么要在列表视图中显示 404?
-
我不确定我是否这样做,我想要完成的只是在查询集为空时不返回 200 成功...
-
嗯,
get_queryset函数需要queryset而不是Response。如果您想合并此内容,可以像其中一个答案所建议的那样提出异常。
标签: django django-rest-framework