Как сгенерировать файл в MEDIA_ROOT в Django?

В моем представлении есть функция, которая генерирует файл, но ничего не возвращает. Я хочу, чтобы файл создавался в определенной папке в MEDIA_ROOT и сохранялся в моих моделях, но я не уверен, как именно это сделать. Вот соответствующий раздел моего представления:

writer = get_writer(output_format, output_dir)

Эта функция создает файл в указанном каталоге. Я хочу сохранить его в определенном каталоге, относящемся к моему MEDIA_ROOT.

Вот соответствующий раздел моего файла settings.py:

MEDIA_URL='/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

Каталог назначения, например, может быть media/destination_directory, но я не уверен, как записать путь относительно MEDIA_ROOT

Вы можете использовать os.path для построения путей к файлам, которые являются относительными по отношению к вашему MEDIA_ROOT, например:

import os
from django.conf import settings

# ........

# Construct the destination path relative to MEDIA_ROOT
destination_directory = 'destination_directory'
destination_path = os.path.join(settings.MEDIA_ROOT, destination_directory, 'generated_file')

# Ensure the directory exists, create it if necessary
os.makedirs(os.path.dirname(destination_path), exist_ok=True)

# Save the generated file to the destination path
with open(destination_path, 'wb') as f:
    writer.write(f)

# .........

Также убедитесь, что каталог destination_directory существует, прежде чем пытаться сохранить файл, используя os.makedirs(). Аргумент exist_ok=True гарантирует, что ошибка не возникнет, если каталог уже существует.

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