gpt4 book ai didi

python - django rest 框架返回文件

转载 作者:太空狗 更新时间:2023-10-29 17:14:02 27 4
gpt4 key购买 nike

我的 views.py 中有以下 View -

class FilterView(generics.ListAPIView):
model = cdx_composites_csv

def get(self, request, format=None):
vendor = self.request.GET.get('vendor')
filename = self.request.GET.get('filename')
tablename = filename.replace(".","_")
model = get_model(vendor, tablename)
filedate = self.request.GET.get('filedate')
snippets = model.objects.using('markitdb').filter(Date__contains=filedate)
serializer = cdx_compositesSerializer(snippets, many=True)
if format == 'raw':
zip_file = open('C:\temp\core\files\CDX_COMPOSITES_20140626.zip', 'rb')
response = HttpResponse(zip_file, content_type='application/force-download')
response['Content-Disposition'] = 'attachment; filename="%s"' % 'CDX_COMPOSITES_20140626.zip'
return response

else:
return Response(serializer.data)

它对 xml、json、csv 非常有用,但是当我尝试使用 raw 时,它没有返回文件,而是给出““detail”:“Not found””为什么会这样?

我打的网址如下——

有效的 json 示例 -

http://dt-rpittom:8000/testfilter/?vendor=markit&filename=cdx_composites.csv&filedate=2014-06-26&format=json

这应该会返回一个 zip 文件以供下载。

http://dt-rpittom:8000/testfilter/?vendor=markit&filename=cdx_composites.csv&filedate=2014-06-26&format=raw

最佳答案

我不知道为什么我必须这样做 - 可能是 Django Rest Framework 内部不允许将自定义方法放入格式中的东西?

我只是将其更改为以下 -

if fileformat == 'raw':
zip_file = open('C:\temp\core\files\CDX_COMPOSITES_20140626.zip', 'rb')
response = HttpResponse(FileWrapper(zip_file), content_type='application/zip')
response['Content-Disposition'] = 'attachment; filename="%s"' % 'CDX_COMPOSITES_20140626.zip'
return response

然后在我的 URL 中输入新值就可以正常工作了。我很想知道为什么我不能使用格式来提供文件。

关于python - django rest 框架返回文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25449946/

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