У меня есть приложение django, размещенное с использованием nginx и gunicorn.
Одной из функций, которые у меня есть, является создание PDF на лету с использованием xhtml2pdf.
Я могу получить доступ к файлам в формате pdf, например, / pdf / (id) /, но у меня проблема с именем файла.
Часть кода, вызывающая проблему:
# generate the pdf. This function has been tested and is not causing the problem
pdf = render_to_pdf(template, data)
if pdf:
response = HttpResponse(pdf, content_type='application/pdf')
filename = "cotización_%s.pdf" % (doc_name)
content = "inline; filename='%s'" % (filename)
response['Content-Disposition'] = content
return response
Из журнала ошибок я понял, что проблема в акценте на имени файла (cotización)
File "~/lib/python3.6/site-packages/gunicorn/workers/sync.py", line 182, in handle_request
resp.write(item)
File "~/lib/python3.6/site-packages/gunicorn/http/wsgi.py", line 333, in write
self.send_headers()
File "~/lib/python3.6/site-packages/gunicorn/http/wsgi.py", line 329, in send_headers
util.write(self.sock, util.to_bytestring(header_str, "ascii"))
File "~/lib/python3.6/site-packages/gunicorn/util.py", line 507, in to_bytestring
return value.encode(encoding)
UnicodeEncodeError: 'ascii' codec can't encode character '\xf3' in position 176: ordinal not in range(128)
На моем локальном хосте я могу получить доступ к файлам PDF. Но на моем сервере я получаю 502 ошибку. Если я уберу «ó», проблема исчезнет.
Итак, мой вопрос, как я могу обслуживать PDF-файлы, включая акценты в имени файла?
ПРИМЕЧАНИЕ. Акцент не на URL, а на имени файла.