【问题标题】:Django-rest-framework json dumpDjango-rest-framework json 转储
【发布时间】:2012-12-07 19:44:45
【问题描述】:

我使用 django-rest-framework 制作了一个简单的 JSON API,我希望能够将 5 个集合下载为一个包含 JSON 文件的集合的 zip 文件。 (我的应用需要离线转储数据)。

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

这样做的最佳方法是什么?我可以使用 urllib/Requests 直接查询我的 API,但调用整个 http 堆栈似乎还有很长的路要走...

非常感谢!

【问题讨论】:

  • MyModelList.as_view()(request, format="json").rendered_content 似乎得到了我想要的 JSON,但这是最好的选择吗
  • 有什么可行的例子吗?谢谢

标签: django json zip django-rest-framework


【解决方案1】:

您可以使用您提到的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) 来添加内容。

  • 当将 zipfile 作为 django 响应返回时,不要忘记设置 Content-Disposition 标头,如 https://stackoverflow.com/a/909088/27401 所示

【讨论】:

    猜你喜欢
    • 2019-08-19
    • 2023-03-14
    • 2018-10-05
    • 2021-08-03
    • 2015-09-15
    • 2016-01-09
    • 2018-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多