响应内容必须先渲染才能迭代

2 投票
1 回答
6449 浏览
提问于 2025-04-18 16:29

我有以下的views.py文件

class FilterView(generics.ListAPIView):
    model = cds_composite_csv
    serializer_class = cds_compositeSerializer

def get_queryset(self):
    filename = self.request.GET.get('filename')
    model = get_model('markit', 'cds_composite_csv')
    filedate = self.request.GET.get('filedate')
    if UserFile.objects.filter(user=self.request.user, file__filename=filename).exists():
        queryset = model.objects.using('markitdb').filter(Date__contains=filedate)
        return queryset
    else:
        content = {
            'status': 'Request Failed.'
        }
        return Response(content)

我明白它失败的原因是因为else语句,以及它试图使用类视图中的序列化器。那么,如果满足else条件,我该如何让它忽略这个序列化器呢?

1 个回答

3

你真的想要明确返回 'status':'Request Failed' 吗?我觉得不如在 else 语句里放一个 raise Http404,然后把其他的都去掉。如果我要写一个程序来使用你的API,首先我会检查一下是否得到了状态码200,才能继续往下走。在这里我会看到 'HTTP 200 OK',但却没有得到预期的结果。

上面只是一个可能的解决方案,你也可以使用 try-except 或者其他方式,但我确实不建议使用自定义的 Request failed。这只是我的个人看法。

撰写回答