Как сгенерировать файл в 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
гарантирует, что ошибка не возникнет, если каталог уже существует.