Создание нескольких PDF-файлов из представления Django с помощью Weasyprint
Когда пользователь нажимает кнопку загрузки, я хочу создать несколько PDF-файлов. В настоящее время я могу создать только один PDF-файл.
То, что я хочу, это создать два PDF из представления Django, когда пользователь нажимает кнопку загрузки с weasyprint.
Ниже код генерирует только один PDF
def get(self, *args, **kwargs):
obj = self.get_object()
html_result = super(GenerateInvoicePDFView, self).get(*args,
**kwargs)
response = HttpResponse(content_type='application/pdf')
response['Content-Disposition'] = 'attachment; filename="%s.pdf"' %
obj.name
weasyprint.HTML(string= html_result.getvalue()).write_pdf(response)
return response
Этот ответ должен генерировать два PDF, это возможно? Пожалуйста, помогите Спасибо
1 ответ
Вы не можете вернуть несколько файлов в ответе. Единственное решение, которое я вижу, - это сжать их, отправить их пользователю по электронной почте или создать две отдельные кнопки загрузки.
Как насчет:
Посмотреть:
def get(self, *args, **kwargs):
if 'file-1' in self.request.GET:
obj = self.get_object(file='file-1')
else: # I assume you always want to download some file
obj = self.get_object(file='file-2')
html_result = super(GenerateInvoicePDFView, self).get(*args,
**kwargs)
response = HttpResponse(content_type='application/pdf')
response['Content-Disposition'] = 'attachment; filename="%s.pdf"' %
obj.name
weasyprint.HTML(string= html_result.getvalue()).write_pdf(response)
return response
шаблон:
<form action="" method="get">
{{ form }}
<input type="submit" name="file-1" value="Download file 1" />
<input type="submit" name="file-2" value="Download file 2" />
</form>