Объект default_storage

Объект default_storage представляет собой экземпляр класса Storage, который используется по умолчанию для всех операций с файлами в Django. Он предоставляет единый интерфейс для работы с файлами независимо от того, используется ли локальная файловая система или облачное хранилище. Объект автоматически настраивается на основе параметра DEFAULT_FILE_STORAGE в настройках проекта. Основные методы включают сохранение, открытие, удаление и проверку существования файлов.

Синтаксис

pythonfrom 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)

Пример

Давайте сохраним текстовый файл в хранилище по умолчанию:

pythonfrom 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)

Результат выполнения кода:

python"example.txt"

Пример

Давайте откроем сохраненный файл и прочитаем его содержимое:

pythonfrom 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)

Результат выполнения кода:

python"Hello, World!"

Пример

Давайте проверим существование файла перед его удалением:

pythonfrom 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")

Результат выполнения кода:

python"File size: 12 bytes"
"File deleted successfully"

Пример

Давайте получим URL и путь к файлу для использования в шаблонах:

pythonfrom 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)

Результат выполнения кода:

python"/media/image.jpg"
"/path/to/project/media/image.jpg"

Смотрите также

  • класс Storage,
    который определяет базовый интерфейс для хранения файлов
  • класс File,
    который представляет собой файловый объект в Django
  • класс ContentFile,
    который создает файл из строковых данных
  • класс FileSystemStorage,
    который реализует хранение на локальной файловой системе