Ответ, который возвращает ваша функция, не будет отображать pdf, но будет обрабатываться как вложение файла (т.е. сохраняться на диск).Это из-за этой строки:
response['Content-Disposition'] = 'attachment; filename=RDBA.xfdf'
, которая сообщает браузеру, что файл RDBA.xfdf
должен быть сохранен.
Проверьте, вызывается ли функция print_rdba вообще.Если ваша кнопка не имеет названия submit_rdba_form
, тогда request.POST.has_key('submit_rdba_form')
будет False
.
Вы также можете попробовать поместить разметку в файл шаблона и вместо этого отобразить шаблон в ответе.Это соответствует философии Django MTV (представление модели-шаблона, похожее на MVC , где логика приложения отделена от представления) и лучше, особенно если вы планируете добавлять формы в документ:
xfdf.html
в вашей папке templates
:
<?xml version="1.0" encoding="UTF-8"?>
<xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve">
<fields>
</fields>
<f href="{{file}}" target="_blank"/>
</xfdf>
Новый print_rdba
from django.http import HttpResponse
from django.template.loader import get_template
from django.template import Context
def print_rdba(client=None, data=None ,investment_form=None):
file = "/media/files/investment_forms/whatever.pdf"
response = HttpResponse(mimetype='application/pdf')
response['Content-Disposition'] = 'attachment; filename=RDBA.xfdf'
template = get_template("xfdf.html")
xfdf = template.render(Context({"file":file}))
response.write(xfdf)
return response