Ошибка при загрузке файлов из приложения Django в производстве с Gunicorn & Nginx

Я развернул свое приложение Django на AWS EC2 Instance, используя это руководство.

Все работает нормально, но ошибка возникает, когда я загружаю файл excel. (Excel создан с использованием библиотеки opnenpyxl).

При загрузке xlsx файла приложение возвращает download.htm файл. Все отлично работает на сервере разработки.

Я пытался

  1. Добавление и удаление тега download. <a href="{% url 'download_estimate_excel_file' project.id project.name %}" class="dropdown-item" download> Download Excel </a>. [Не сработало]
  2. .
  3. Добавление [service] Environment="LANG=ru_RU.UTF-8" в файл gunicorn.service (нашел это также на StackOverflow). [Не сработало]

Заранее спасибо.

Поскольку у нас нет логирования, я думаю, что было бы разумно реализовать некоторую обработку ошибок. Ниже вы найдете отличный пример из другого поста . Кроме того, я вижу, что вы открываете, добавляете и удаляете файлы из файловой системы. Более эффективно и менее подвержено ошибкам файловой системы работать с временными файлами и сохранять файлы в байтах, а не в файловой системе.

from django.http import HttpResponse, HttpResponseNotFound

def waprfile(request, date):
    ...

    file_location = '/path/to/file/foo.xls'

    try:    
        with open(file_location, 'r') as f:
           file_data = f.read()

        # sending response 
        response = HttpResponse(file_data, content_type='application/vnd.ms-excel')
        response['Content-Disposition'] = 'attachment; filename="foo.xls"'

    except IOError:
        # handle file not exist case here
        response = HttpResponseNotFound('<h1>File not exist</h1>')

    return response
Вернуться на верх