2011-10-31 145 views
2

我正在使用Django制作网站,并且每次用户点击下载按钮时,我都希望下载对话框出现在浏览器中。我使用下面的代码文件下载 -如何在浏览器中从Django项目中弹出下载对话框?

urllib.urlretrieve(filename) 

在这种情况下,虽然文件是越来越下载,但这一进程在后台发生。而且,文件会在Django项目的舞台上下载,因此无法控制文件的保存位置。当用户点击下载按钮时,如何使下载对话框出现,而不是下载过程悄悄地在后台开始?

+0

此下载是否应该在服务器或客户端上发生? –

+0

@DanielRoseman客户端。 – theharshest

回答

3

使用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

让我知道如果您有任何问题。

相关问题