РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
642 of 818 menu

Класс Storage

Класс Storage является базовым абстрактным классом, определяющим интерфейс для работы с файлами в Django. Он предоставляет методы для сохранения, открытия, удаления, проверки существования и получения информации о файлах. Основные реализации включают FileSystemStorage для работы с локальной файловой системой и InMemoryStorage для хранения файлов в памяти. Класс широко используется для управления загруженными файлами и медиа-контентом.

Синтаксис

from django.core.files.storage import default_storage # Использование стандартного хранилища result = default_storage.save(name, content) # Использование конкретного хранилища from django.core.files.storage import FileSystemStorage storage = FileSystemStorage(location='/path/to/files') result = storage.save(name, content)

Пример

Рассмотрим базовый пример сохранения файла с использованием стандартного хранилища:

from django.core.files.storage import default_storage from django.core.files.base import ContentFile # Создаем файл в памяти content = ContentFile(b"Hello, Django!") # Сохраняем файл file_name = default_storage.save("hello.txt", content) print(file_name) # Проверяем существование файла exists = default_storage.exists(file_name) print(exists)

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

"hello.txt" "True"

Пример

Покажем, как открыть существующий файл и прочитать его содержимое:

from django.core.files.storage import default_storage # Открываем файл для чтения with default_storage.open("hello.txt", "rb") as file: content = file.read() print(content.decode("utf-8")) # Получаем размер файла size = default_storage.size("hello.txt") print(size)

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

"Hello, Django!" "14"

Пример

Рассмотрим использование хранилища для удаления файла и получения списка файлов:

from django.core.files.storage import default_storage # Сохраняем несколько файлов for i in range(3): content = ContentFile(f"Content {i}".encode()) default_storage.save(f"file_{i}.txt", content) # Получаем список файлов files = default_storage.listdir("") print(files) # Удаляем файл default_storage.delete("file_0.txt") exists = default_storage.exists("file_0.txt") print(exists)

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

"(['file_0.txt', 'file_1.txt', 'file_2.txt'], [])" "False"

Пример

Рассмотрим использование хранилища для получения URL файла и его пути в файловой системе:

from django.core.files.storage import default_storage from django.core.files.base import ContentFile # Сохраняем файл content = ContentFile(b"Example content") file_name = default_storage.save("example.txt", content) # Получаем URL файла url = default_storage.url(file_name) print(url) # Получаем путь к файлу path = default_storage.path(file_name) print(path)

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

"/media/example.txt" "/path/to/media/example.txt"

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

  • класс FileSystemStorage,
    реализация хранилища для локальной файловой системы
  • класс InMemoryStorage,
    реализация хранилища для хранения файлов в памяти
  • метод save,
    сохраняет файл в хранилище
  • метод open,
    открывает файл для чтения или записи
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить