Django.fun

The file is downloading in local but not in production server in Django Rest framework?

I have a simple API that downloads a file in the system. It works perfectly in the local server, but when I deploy the same code to production, it gives me a 500 server error. If I try with another id that doesn't exist, it will say the object is not found.

My code is as follows.

def get_permissions(self):
    """
    Instantiates and returns the list of permissions that this view requires.
    """
    if self.request.query_params.get("download") == "file":
        return []
    return [permission() for permission in self.permission_classes]

def get(self, request, *args, **kwargs):

    if request.query_params.get("download") == "file":
        return self.download_file(request)
    /....other codes........./

def download_file(self, request, *args, **kwargs):

    instance = self.get_object()
    file_handle = instance.file.path
    document = open(file_handle, "rb")
    response = HttpResponse(FileWrapper(document), content_type="")
    response["Content-Disposition"] = (
        'attachment; filename="%s"' % instance.file_name
    )
    return response 

My endpoint URL is this:

{{prod}}api/v1/example/notes/12/?download=file

When I call this api, putting local in place of prod, it works and I get a file downloaded, but not in production. Is it something to do with file being closed before getting a response??

Tutorials

Современный Python: начинаем проект с pyenv и poetry

Настройка проекта Python — виртуальные среды и управление пакетами

Использование requests в Python — тайм-ауты, повторы, хуки

Понимание декораторов в Python

ProcessPoolExecutor в Python: полное руководство

map() против submit() с ProcessPoolExecutor в Python

Понимание атрибутов, словарей и слотов в Python

Полное руководство по slice в Python

Выпуск Django 4.0

Безопасное развертывание приложения Django с помощью Gunicorn, Nginx и HTTPS

Автоматический повтор невыполненных задач Celery

Django REST Framework и Elasticsearch

Докеризация Django с помощью Postgres, Gunicorn и Nginx

Асинхронные задачи с Django и Celery

Релизы безопасности Django: 3.2.4, 3.1.12 и 2.2.24

Выпуски исправлений ошибок Django: 3.2.3, 3.1.11 и 2.2.23

Эффективное использование сериализаторов Django REST Framework

Выпуски безопасности Django: 3.2.2, 3.1.10 и 2.2.22

Выпущенные релизы безопасности Django: 3.2.1, 3.1.9 и 2.2.21

Обработка периодических задач в Django с помощью Celery и Docker

View all tutorials →