我正在使用Django制作网站,并且每次用户点击下载按钮时,我都希望下载对话框出现在浏览器中。我使用下面的代码文件下载 -如何在浏览器中从Django项目中弹出下载对话框?
urllib.urlretrieve(filename)
在这种情况下,虽然文件是越来越下载,但这一进程在后台发生。而且,文件会在Django项目的舞台上下载,因此无法控制文件的保存位置。当用户点击下载按钮时,如何使下载对话框出现,而不是下载过程悄悄地在后台开始?
我正在使用Django制作网站,并且每次用户点击下载按钮时,我都希望下载对话框出现在浏览器中。我使用下面的代码文件下载 -如何在浏览器中从Django项目中弹出下载对话框?
urllib.urlretrieve(filename)
在这种情况下,虽然文件是越来越下载,但这一进程在后台发生。而且,文件会在Django项目的舞台上下载,因此无法控制文件的保存位置。当用户点击下载按钮时,如何使下载对话框出现,而不是下载过程悄悄地在后台开始?
使用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>
其实我也有类似的问题,这不是很久以前 - 这里有几个类似的问题,你可以看看here,at my question(我知道这是跛脚链接到我自己问题,但我认为它可以帮助你),并且here too。
让我知道如果您有任何问题。
此下载是否应该在服务器或客户端上发生? –
@DanielRoseman客户端。 – theharshest