Как получить доступ к PDF-файлам со специальными символами в моем приложении Django? - PullRequest
0 голосов
/ 25 января 2019

У меня есть приложение 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, а на имени файла.

...