2012-12-20 78 views
2

我已经使用django-rest-framework制作了一个简单的JSON API,并且我希望能够将这5个集合作为一个包含集合的zipfile下载为JSON文件。 (我的应用程序需要此数据的离线转储)。Django-rest-framework json dump

我正在考虑编写一个视图,例如/download/,它将所有我的MyModelList.as_view()的输出捆绑在一个zip中并提供。

这样做的最好方法是什么?我可以使用urllib/Requests直接查询我的API,但似乎很长一段时间,以调用整个http堆栈...

非常感谢!

+0

'MyModelList.as_view()(请求,格式= “JSON”)。rendered_content '似乎得到我想要的JSON,是最好的选择,虽然 – 0atman

+0

任何工作的例子?谢谢 – cor

回答

3

您可以使用您提到的MyModelList.as_view()(request, format="json").rendered_content。根据您的设置,您也可以直接调用序列化程序,而不是直接通过模型。当然,这取决于您是否在视图中做了任何特殊的事情,或者只是传递序列化的模型数据。

要压缩这些文件,请使用Python的zipfile module。有关其他提示,请参阅https://stackoverflow.com/a/9644831/27401https://stackoverflow.com/a/908293/27401。摘要:

  • 使用StringIO创建一个类文件对象(而不是临时文件)。

  • 在该StringIO上使用zipfile的.writestr('filename-in-zip.json', your_json_string)来添加内容。

  • 当返回zip文件作为django的答复,不要忘记设置Content-Disposition头如图https://stackoverflow.com/a/909088/27401