我的视图中有以下视图.py-
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框架内部不允许将自定义方法放入格式的东西?
我只是把它改成了-
然后在我的URL中点击新值,它就可以正常工作了。我很想知道为什么我不能用格式来提供文件。
尝试使用
FileWrapper
:另外,我将使用^{} 而不是
application/force-download
。相关问题 更多 >
编程相关推荐