如何从Django项目中弹出浏览器中的下载对话框?

时间:2011-10-31 22:33:16

标签: python django

我正在使用Django建立一个网站,每次用户点击下载按钮,我都希望下载对话框出现在浏览器中。我使用以下代码进行文件下载 -

urllib.urlretrieve(filename)

在这种情况下,尽管文件已下载,但该过程在后台进行。此外,文件会在Django项目暂存的地方下载,因此无法控制文件的保存位置。如何在用户点击下载按钮时立即显示下载对话框,而不是在后台隐藏下载过程?

1 个答案:

答案 0 :(得分:4)

使用django返回附件应该可以达到此目的。以下是将csv文件返回给用户的示例。在页面顶部的示例中:https://docs.djangoproject.com/en/dev/howto/outputting-csv/?from=olddocs, 您可以通过设置

来查看
response = HttpResponse(mimetype='text/csv')
response['Content-Disposition'] = 'attachment; filename=somefilename.csv'

您可以指定文件类型并将其设置为附件。

如果你想在按钮上实现这个,我实际上有一个单独的视图来返回这个文件响应。然后,您可以在模板中指定在按下按钮时调用该视图(确保链接到urls.py文件中的视图)。它看起来像这样:

<li  class = 'button'>
  <a  href = "{% url app.views.function %}"> 
       Download
  </a>
</li>

我实际上在不久前就遇到了类似的问题 - 这里有几个类似的问题你可以看hereat my question(我知道链接到我自己的问题是蹩脚的,但是我认为它可以帮到你),here too

如果您有任何问题,请与我们联系。