我正在制作视图,以便在我的视图中列出数据,如此
class DownloadView(ListView):
template_name = 'mytemplate.html'
现在在我的视图中,我希望在页面加载时然后我在该视图中生成一个pdf文件(我可以这样做),然后它应该提示用户保存文件选项。我怎么能这样做
答案 0 :(得分:3)
查看django docs,显示response['Content-Disposition']
填充'attachment; filename="somefilename.pdf"'
,但如果您已将pdf文件数据读入{{1},我认为以下内容可能有效}。
pdf_data
答案 1 :(得分:0)
我不建议在请求期间生成PDF或使用Django来提供静态文件。
您最好的选择是将所有PDF保存到文件夹并使用Apache或Nginx为其提供服务,并将内容类型标头设置为application / octet-stream,以指示响应是要保存的。
- 编辑 -
我认为正确的解决方案是动态生成PDF,但使用任务队列而不是在请求期间执行。如果您需要对请求PDF的用户进行身份验证和授权,请在Django中执行,但使用X-Accel(nginx),X-Sendfile(apache)或等效的 - 告诉您的Web服务器提供实际文件。
Django不是为了提供静态文件。引用django文档,“只是因为它可以,并不意味着它应该”。
在请求期间生成PDF并不是一个好主意,因为它会让用户等待,请求可以并且会超时,长时间运行请求会占用您的服务器,不耐烦的用户会重复刷新(最后),最后是DOS攻击面