如何在django中为生成的报告pdf提供下载链接

时间:2012-03-29 13:43:34

标签: django django-templates django-views python-2.7

我已根据views.py

中的代码从数据库生成PDF报告
 resp = HttpResponse(mimetype='application/pdf')
 txn = transaction.objects.order_by('user', 'id')
 report = txn_reports(queryset=txn)
 print report
 report.generate_by(PDFGenerator, filename='filename.pdf')'

这个PDF文件正在保存在项目文件夹中,我不需要它,我希望它提示用户保存文件的位置。

我想在客户端的浏览器中为此PDF提供下载选项。如何为HTML中的此文件提供“另存为”功能,以便客户端可以下载PDF格式

2 个答案:

答案 0 :(得分:1)

获取PDF数据并发送为HttpReponse。

我过去做过类似的事情,用比萨生成报告:

template = get_template("my_template.html")
context = Context({"data": report_data})
html  = template.render(context)
result = StringIO.StringIO()
pdf = pisa.pisaDocument(StringIO.StringIO(html.encode("UTF-8")), result)
if not pdf.err:
    return HttpResponse(result.getvalue(), mimetype='application/pdf')

真正重要的是最后一行,我们使用pdf文档返回HttpResponse。然后,用户的浏览器将提示他保存它,或者如果支持则显示它。

答案 1 :(得分:0)

您可以做的是将此pdf作为HttpResponse发送到浏览器,浏览器将自动打开pdf并为用户提供保存方式。