Возьмите данные PDF и отправьте как HttpReponse.
В прошлом я делал что-то подобное, генерируя отчеты с помощью pisa:
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')
Для вас действительно важнопоследняя строка, где мы возвращаем HttpResponse с документом pdf.Затем браузер пользователя предложит ему сохранить его или, возможно, отобразить, если он поддерживается.