响应内容必须在迭代之前呈现

时间:2014-08-08 02:29:54

标签: python django django-rest-framework

我有以下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子句,如何让它忽略序列化?

1 个答案:

答案 0 :(得分:3)

你真的想要明确地返回'status':'Request Failed'吗? 我希望将raise Http404放在else块中并删除其他所有内容。 如果我应该写一个客户端来使用你的API,我首先要检查我是否在进一步操作之前获得了状态代码200。在这里,我会得到HTTP 200 OK',但不是预期的结果。

以上只是一种可能的解决方案,您也可以尝试使用try-except或其他内容,但我肯定会建议不要使用自定义Request failed。这只是我的意见。