API хранилища файлов¶
Getting the current storage class¶
Django provides two convenient ways to access the current storage class:
- class DefaultStorage¶
DefaultStorageprovides lazy access to the current default storage system as defined byDEFAULT_FILE_STORAGE.DefaultStorageusesget_storage_class()internally.
- get_storage_class(import_path=None)¶
Returns a class or module which implements the storage API.
When called without the
import_pathparameterget_storage_classwill return the current default storage system as defined byDEFAULT_FILE_STORAGE. Ifimport_pathis provided,get_storage_classwill 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) — время создания файла.
Support for pathlib.Path was added to the
FileSystemStorage.save() method.
Класс Хранилище¶
- class Storage¶
Класс
Storageпредоставляет стандартизированный API для хранения файлов, а также набор поведений по умолчанию, которые все другие системы хранения могут наследовать или переопределять при необходимости.Примечание
Когда методы возвращают простые объекты datetime, эффективным часовым поясом будет текущее значение os.environ[„TZ“]``; обратите внимание, что это обычно устанавливается в
TIME_ZONEDjango.- delete(name)¶
Удаляет файл, на который ссылается
name. Если удаление не поддерживается в целевой системе хранения, вместо этого будет выдано сообщение NotImplementedError.
- exists(name)¶
Returns
Trueif a file referenced by the given name already exists in the storage system, orFalseif 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.