API хранилища файлов
Получение класса хранилища по умолчанию
Django предоставляет удобные способы доступа к классу хранилища по умолчанию:
-
storages -
Объект, подобный словарю, который позволяет получить экземпляр хранилища по его псевдониму, определённому в
STORAGES.У
storagesесть атрибутbackends, значение которого по умолчанию равно исходному значению, указанному вSTORAGES.Кроме того,
storagesпредоставляет методcreate_storage(), который принимает словарь, используемый вSTORAGESдля бэкенда, и возвращает экземпляр хранилища на основе определения этого бэкенда. Это может быть полезно сторонним пакетам, которым требуется создавать экземпляры хранилищ в тестах:>>> from django.core.files.storage import storages >>> storages.backends {'default': {'BACKEND': 'django.core.files.storage.FileSystemStorage'}, 'staticfiles': {'BACKEND': 'django.contrib.staticfiles.storage.StaticFilesStorage'}, 'custom': {'BACKEND': 'package.storage.CustomStorage'}} >>> storage_instance = storages.create_storage({"BACKEND": "package.storage.CustomStorage"})
-
class DefaultStorage[исходный код] -
DefaultStorageобеспечивает отложенный доступ к системе хранения по умолчанию, заданной ключомdefaultвSTORAGES. ВнутриDefaultStorageиспользуетstorages.
-
default_storage -
default_storage— это экземплярDefaultStorage.
Класс FileSystemStorage
-
class FileSystemStorage(location=None, base_url=None, file_permissions_mode=None, directory_permissions_mode=None, allow_overwrite=False)[исходный код] -
Класс
FileSystemStorageреализует базовое хранение файлов в локальной файловой системе. Он наследуется отStorageи предоставляет реализации всех его открытых методов.Примечание
Метод
FileSystemStorage.delete()не вызовет исключение, если указанный файл не существует.-
location[исходный код] -
Абсолютный путь к каталогу, в котором будут храниться файлы. По умолчанию используется значение параметра
MEDIA_ROOT.
-
base_url[исходный код] -
URL-адрес для доступа к файлам, хранящимся в этом расположении. По умолчанию используется значение параметра
MEDIA_URL.
-
file_permissions_mode[исходный код] -
Разрешения файловой системы, которые будут назначены файлу при сохранении. По умолчанию используется
FILE_UPLOAD_PERMISSIONS.
-
directory_permissions_mode[исходный код] -
Разрешения файловой системы, которые будут назначены каталогу при сохранении. По умолчанию используется
FILE_UPLOAD_DIRECTORY_PERMISSIONS.
-
allow_overwrite -
Флаг, управляющий возможностью сохранения нового файла поверх существующего. По умолчанию имеет значение
False.
-
get_created_time(name)[исходный код] -
Возвращает значение
datetime, соответствующее ctime системы, то естьos.path.getctime(). В некоторых системах (например, Unix) это время последнего изменения метаданных, а в других (например, Windows) — время создания файла.
-
Класс InMemoryStorage
-
class InMemoryStorage(location=None, base_url=None, file_permissions_mode=None, directory_permissions_mode=None)[исходный код] -
Класс
InMemoryStorageреализует файловое хранилище в памяти. Оно не обеспечивает постоянного хранения, но может ускорить тесты, поскольку позволяет избежать обращения к диску.-
location[исходный код] -
Абсолютный путь к имени каталога, назначенному файлам. По умолчанию используется значение параметра
MEDIA_ROOT.
-
base_url[исходный код] -
URL-адрес для доступа к файлам, хранящимся в этом расположении. По умолчанию используется значение параметра
MEDIA_URL.
-
file_permissions_mode[исходный код] -
Разрешения файловой системы, назначаемые файлам; атрибут предусмотрен для совместимости с
FileSystemStorage. По умолчанию используетсяFILE_UPLOAD_PERMISSIONS.
-
directory_permissions_mode[исходный код] -
Разрешения файловой системы, назначаемые каталогам; атрибут предусмотрен для совместимости с
FileSystemStorage. По умолчанию используетсяFILE_UPLOAD_DIRECTORY_PERMISSIONS.
-
Класс Storage
-
class Storage[исходный код] -
Класс
Storageпредоставляет стандартизированный API для хранения файлов, а также набор поведений по умолчанию, которые все остальные системы хранения могут наследовать или переопределять при необходимости.Примечание
Если методы возвращают наивные объекты
datetime, будет использоваться текущее значениеos.environ['TZ']; обратите внимание, что обычно оно задаётся параметром DjangoTIME_ZONE.-
delete(name)[исходный код] -
Удаляет файл, на который ссылается
name. Если целевая система хранения не поддерживает удаление, вместо этого будет вызвано исключениеNotImplementedError.
-
exists(name)[исходный код] -
Возвращает
True, если файл с указанным именем уже существует в системе хранения.
-
get_accessed_time(name)[исходный код] -
Возвращает значение
datetime, соответствующее времени последнего доступа к файлу. Для систем хранения, которые не могут вернуть время последнего доступа, будет вызвано исключениеNotImplementedError.Если
USE_TZимеет значениеTrue, возвращается объектdatetimeс часовым поясом; в противном случае возвращается наивныйdatetimeв местном часовом поясе.
-
get_alternative_name(file_root, file_ext)[исходный код] -
Возвращает альтернативное имя файла на основе параметров
file_rootиfile_ext: перед расширением к имени файла добавляется символ подчёркивания и случайная буквенно-цифровая строка из 7 символов.
-
get_available_name(name, max_length=None)[исходный код] -
Возвращает имя файла на основе параметра
name, которое свободно и доступно для записи нового содержимого в целевой системе хранения.Длина имени файла не превысит
max_length, если этот параметр указан. Если не удастся найти свободное уникальное имя файла, будет вызвано исключениеSuspiciousFileOperation.Если файл с именем
nameуже существует, для получения альтернативного имени вызывается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)[исходный код] -
Проверяет
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.
-
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/6.0/ref/files/storage/