Объект default_storage
Объект default_storage представляет собой экземпляр
класса Storage, который используется по умолчанию
для всех операций с файлами в Django. Он предоставляет
единый интерфейс для работы с файлами независимо от
того, используется ли локальная файловая система или
облачное хранилище. Объект автоматически настраивается
на основе параметра DEFAULT_FILE_STORAGE в
настройках проекта. Основные методы включают сохранение,
открытие, удаление и проверку существования файлов.
Синтаксис
from django.core.files.storage import default_storage
# Сохранение файла
default_storage.save(name, content)
# Открытие файла
default_storage.open(name, mode='rb')
# Удаление файла
default_storage.delete(name)
# Проверка существования
default_storage.exists(name)
# Получение размера файла
default_storage.size(name)
# Получение URL файла
default_storage.url(name)
# Получение пути к файлу
default_storage.path(name)
Пример
Давайте сохраним текстовый файл в хранилище по умолчанию:
from django.core.files.base import ContentFile
from django.core.files.storage import default_storage
# Создание содержимого файла
content = ContentFile("Hello, World!")
# Сохранение файла
filename = default_storage.save("example.txt", content)
print(filename)
Результат выполнения кода:
"example.txt"
Пример
Давайте откроем сохраненный файл и прочитаем его содержимое:
from django.core.files.storage import default_storage
# Открытие файла для чтения
file = default_storage.open("example.txt", mode='rb')
content = file.read().decode('utf-8')
file.close()
print(content)
Результат выполнения кода:
"Hello, World!"
Пример
Давайте проверим существование файла перед его удалением:
from django.core.files.storage import default_storage
# Проверка существования
if default_storage.exists("example.txt"):
# Получение размера
size = default_storage.size("example.txt")
print(f"File size: {size} bytes")
# Удаление файла
default_storage.delete("example.txt")
print("File deleted successfully")
else:
print("File not found")
Результат выполнения кода:
"File size: 12 bytes"
"File deleted successfully"
Пример
Давайте получим URL и путь к файлу для использования в шаблонах:
from django.core.files.base import ContentFile
from django.core.files.storage import default_storage
# Сохранение изображения
content = ContentFile(b"fake image data")
filename = default_storage.save("image.jpg", content)
# Получение URL
file_url = default_storage.url(filename)
print(file_url)
# Получение пути к файлу
file_path = default_storage.path(filename)
print(file_path)
Результат выполнения кода:
"/media/image.jpg"
"/path/to/project/media/image.jpg"
Смотрите также
-
класс
Storage,
который определяет базовый интерфейс для хранения файлов -
класс
File,
который представляет собой файловый объект в Django -
класс
ContentFile,
который создает файл из строковых данных -
класс
FileSystemStorage,
который реализует хранение на локальной файловой системе