• 3.2
  • 5.0
  • 6.1
  • Версия документации: 3.1

API хранилища файлов

Getting the current storage class

Django provides two convenient ways to access the current storage class:

class DefaultStorage

DefaultStorage provides lazy access to the current default storage system as defined by DEFAULT_FILE_STORAGE. DefaultStorage uses get_storage_class() internally.

get_storage_class(import_path=None)

Returns a class or module which implements the storage API.

When called without the import_path parameter get_storage_class will return the current default storage system as defined by DEFAULT_FILE_STORAGE. If import_path is provided, get_storage_class will attempt to import the class or module from the given path and will return it if successful. An exception will be raised if the import is unsuccessful.

Класс FileSystemStorage.

class FileSystemStorage(location=None, base_url=None, file_permissions_mode=None, directory_permissions_mode=None)

Класс FileSystemStorage реализует базовое хранилище файлов в локальной файловой системе. Он наследуется от Storage и предоставляет реализации для всех его общедоступных методов.

location

Абсолютный путь к каталогу, в котором будут храниться файлы. По умолчанию используется значение вашей настройки MEDIA_ROOT.

base_url

URL-адрес, который обслуживает файлы, хранящиеся в этом месте. По умолчанию используется значение вашей настройки MEDIA_URL.

file_permissions_mode

Разрешения файловой системы, которые файл получит при сохранении. По умолчанию: настройка: FILE_UPLOAD_PERMISSIONS.

directory_permissions_mode

Разрешения файловой системы, которые каталог получит при сохранении. По умолчанию: настройка: FILE_UPLOAD_DIRECTORY_PERMISSIONS.

Примечание

Метод FileSystemStorage.delete() не вызовет исключение, если данное имя файла не существует.

get_created_time(name)

Возвращает datetime системного времени ctime, т.е. os.path.getctime(). В некоторых системах (например, Unix) это время последнего изменения метаданных, а в других (например, Windows) — время создания файла.

Changed in Django 3.1:

Support for pathlib.Path was added to the FileSystemStorage.save() method.

Класс Хранилище

class Storage

Класс Storage предоставляет стандартизированный API для хранения файлов, а также набор поведений по умолчанию, которые все другие системы хранения могут наследовать или переопределять при необходимости.

Примечание

Когда методы возвращают простые объекты datetime, эффективным часовым поясом будет текущее значение os.environ[„TZ“]``; обратите внимание, что это обычно устанавливается в TIME_ZONE Django.

delete(name)

Удаляет файл, на который ссылается name. Если удаление не поддерживается в целевой системе хранения, вместо этого будет выдано сообщение NotImplementedError.

exists(name)

Returns True if a file referenced by the given name already exists in the storage system, or False if the name is available for a new file.

get_accessed_time(name)

Возвращает datetime времени последнего доступа к файлу. Для систем хранения, которые не могут вернуть время последнего доступа, это вызовет NotImplementedError.

Если USE_TZ имеет значение True, возвращается известное datetime, в противном случае возвращается простое datetime в местном часовом поясе.

get_alternative_name(file_root, file_ext)
New in Django 3.0.

Возвращает альтернативное имя файла на основе параметров file_root и file_ext, к имени файла перед расширением добавляется подчеркивание плюс случайная 7-значная буквенно-цифровая строка.

get_available_name(name, max_length=None)

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

Длина имени файла не будет превышать max_length, если она указана. Если свободное уникальное имя файла не может быть найдено, будет создано исключение SuspiciousFileOperation.

Если файл с именем уже существует, вызывается :meth:get_alternative_name для получения альтернативного имени.

get_created_time(name)

Возвращает datetime времени создания файла. Для систем хранения, которые не могут вернуть время создания, возникнет ошибка NotImplementedError.

Если USE_TZ имеет значение True, возвращается известное datetime, в противном случае возвращается простое datetime в местном часовом поясе.

get_modified_time(name)

Возвращает datetime времени последнего изменения файла. Для систем хранения, которые не могут вернуть время последнего изменения, возникнет ошибка NotImplementedError.

Если USE_TZ имеет значение True, возвращается известное datetime, в противном случае возвращается простое datetime в местном часовом поясе.

get_valid_name(name)

Возвращает имя файла на основе параметра name, подходящее для использования в целевой системе хранения.

generate_filename(filename)

Проверяет имя_файла, вызывая get_valid_name() и возвращает имя файла, которое будет передано в метод save().

Аргумент filename может включать путь, возвращаемый FileField.upload_to. В этом случае путь не будет передан в get_valid_name(), а будет добавлен обратно к полученному имени.

Реализация по умолчанию использует операции os.path. Переопределите этот метод, если он не подходит для вашего хранилища.

listdir(path)

Перечисляет содержимое указанного пути, возвращая кортеж из двух списков; первый элемент — это каталоги, второй — файлы. Для систем хранения, которые не могут предоставить такой список, вместо этого будет выдана ошибка NotImplementedError.

open(name, mode='rb')

Открывает файл, заданный name. Обратите внимание: хотя возвращаемый файл гарантированно является объектом File, на самом деле он может быть каким-то подклассом. В случае удаленного хранилища файлов это означает, что чтение/запись может быть довольно медленным, поэтому будьте осторожны.

path(name)

Путь к локальной файловой системе, по которому файл можно открыть с помощью стандартной функции Python open(). Для систем хранения, которые недоступны из локальной файловой системы, вместо этого будет выдаваться NotImplementedError.

save(name, content, max_length=None)

Сохраняет новый файл с использованием системы хранения, желательно с указанным именем. Если файл с таким именем name уже существует, система хранения может изменить имя файла по мере необходимости, чтобы получить уникальное имя. Будет возвращено фактическое имя сохраненного файла.

Аргумент max_length передается в get_available_name().

Аргумент content должен быть экземпляром django.core.files.File или файловоподобным объектом, который можно обернуть в File.

size(name)

Возвращает общий размер в байтах файла, на который ссылается name. Для систем хранения, которые не могут вернуть размер файла, вместо этого будет выдан NotImplementedError.

url(name)

Возвращает URL-адрес, по которому можно получить доступ к содержимому файла, на который ссылается name. Для систем хранения, которые не поддерживают доступ по URL-адресу, вместо этого будет выдаваться NotImplementedError.

Back to Top