Django: Куда создается этот zip-файл? - PullRequest
1 голос
/ 26 мая 2020

Для некоторого контекста у меня есть проект django-rest-framework. Эта конкретная конечная точка принимает большой двоичный объект json и архивирует его перед сохранением в FileField. У меня вопрос - где именно этот zip-файл, в который я создаю сохранение? Только каталог root? Нужно ли их регулярно чистить?

class MyModel(models.Model):
    ...
    def create_zip(self, user, jsondata):
        filename = "data" + ".zip"
        with gzip.GzipFile(filename, "w") as fout:
            fout.write(jsondata.encode("utf-8"))

        my_model = MyModel.objects.create(
            user=user, animation_file=filename
        )

1 Ответ

0 голосов
/ 26 мая 2020

Да, похоже, что zip-файл создается в текущем каталоге вашего скрипта проекта. И это необходимо очистить.

Более простой способ сделать это - использовать временный каталог. Например, вы можете создать настройку TEMP_ROOT и префикс вашего файла с временным root путем, используя os модуль, т.е.

from django.conf import settings

import os
file_path = os.path.join(settings.TEMP_ROOT, filename)

, и использовать этот file_path для передачи методу gzip.GzipFile() вместо filename.

Убедитесь, что временный каталог уже существует.

...