当前位置: 首页 > 面试题库 >

在Django中提供动态生成的ZIP存档

谷彦君
2023-03-14
问题内容

如何在Django中为用户提供动态生成的ZIP存档?

我正在建立一个站点,用户可以在其中选择可用书籍的任意组合,并将其下载为ZIP存档。我担心为每个请求生成这样的存档会降低我的服务器的爬网速度。我还听说Django当前没有很好的解决方案来提供动态生成的文件


问题答案:

解决方法如下。

使用Python模块zipfile创建zip存档,但是在文件中指定StringIO对象(ZipFile构造函数需要类似文件的对象)。添加你要压缩的文件。然后在Django应用程序中HttpResponse,将mimetype设置为application/x-zip-compressed(或至少application/octet-stream)的StringIO对象的内容返回。如果需要,可以设置content-disposition标题,但这并不是真正需要的。

但是要当心,在每个请求上创建zip存档都是一个坏主意,这可能会杀死你的服务器(如果存档很大,则不计算超时)。基于性能的方法是将生成的输出缓存在文件系统中的某个位置,并且仅在源文件已更改时才重新生成它。更好的主意是事先准备存档(例如,按cron作业),并让你的Web服务器将其作为常规静态变量来提供。



 类似资料:
  • 问题内容: 我正在使用,我的django应用的结构如下 的是 在我尝试使用它为: 但是它没有加载并给出错误 我跑去收集所有静态文件。 为什么要加载CSS文件?是否缺少任何配置? 请提出建议。 问题答案: 根据文档正确的方式来加载静态文件是 这会工作

  • 我尝试使用Zip4j生成一个zip文件供下载。但我总是得到错误:

  • 问题内容: 如何在Django中提供动态生成的图像? 我有一个html标签 链接到此请求处理程序,该请求处理程序创建一个内存中图像 我还计划将请求更改为AJAX,并添加某种缓存机制,但是我的理解是,这不会影响解决方案的这一部分。 问题答案: 我假设您正在使用PIL(Python影像库)。您需要用(例如,如果要提供PNG图像)替换最后一行: 有关更多信息,请参见此处。

  • 我正在尝试为一栋建筑制作一个模拟电梯的GUI(实际上是为了测试线程/c扫描),但当生成电梯控制面板的按钮和每个楼层的按钮时,我有点卡住了。我考虑为每层楼生成一对新的按钮,并为每部电梯生成一个新的控制面板。此外,拥有不同数量的楼层也很困难。不管怎样,我的问题是,这样做最好的方式是什么?也许不必为每件事都生成新的按钮,只需使用一组按钮并更改每个楼层/电梯的操作?我这么问是因为我对GUI不太熟悉。谢谢你

  • 问题内容: 我正在尝试动态指定src中的图像名称。我想使用带路径的变量动态设置图像名称。但我无法正确设置src。我尝试了关于stackoverflow的解决方案,但没有任何效果。 我试图给这样的道路 如果我给出这样的路径,我的图像将保存在src / img路径中 图片正在显示 我知道之前曾问过这个问题,但对我来说没有任何帮助。请帮我如何设置图像路径? 问题答案: 如果您不想要该图像,则必须将所有图

  • 问题内容: 我正在为Django使用apache + mod_wsgi。 并且所有css / js / images都通过提供。 出于某种奇怪的原因,当其他人/朋友/同事尝试访问该网站时,jquery / css不会为他们加载,因此页面看上去很混乱。 我的html文件使用这样的代码- 我的nginx配置是这样的 有一个目录,其中有相应的&目录。 奇怪的是,当我访问它们时页面显示正常。 我已经清除了