响应内容必须先渲染才能迭代
我有以下的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
。这只是我的个人看法。