API хранилища файлов
Получение стандартного класса хранилища
Django предоставляет удобные способы доступа к стандартному классу хранилища:
-
storages -
Экземпляры хранилища, как определены в
STORAGES.
-
class DefaultStorage[source] -
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)[source] -
Класс
FileSystemStorageреализует базовое хранение файлов на локальном файловом сервере. Он наследуется отStorageи предоставляет реализации для всех публичных методов.Примечание
Метод
FileSystemStorage.delete()не будет генерировать исключение, если заданный имя файла не существует.-
location[source] -
Абсолютный путь к каталогу, который будет содержать файлы. По умолчанию принимает значение вашего параметра
MEDIA_ROOT.
-
base_url[source] -
URL для доступа к файлам, хранящимся по этому пути. По умолчанию принимает значение вашего параметра
MEDIA_URL.
-
file_permissions_mode[source] -
Права доступа к файлам в файловой системе, которые будут присвоены файлу при сохранении. По умолчанию значение
FILE_UPLOAD_PERMISSIONS.
-
directory_permissions_mode[source] -
Права доступа к каталогам в файловой системе, которые будут присвоены каталогу при сохранении. По умолчанию значение
FILE_UPLOAD_DIRECTORY_PERMISSIONS.
-
allow_overwrite -
Добавлена в Django 5.1.
Флаг для управления возможностью перезаписи существующего файла новым. По умолчанию
False.
-
get_created_time(name)[source] -
Возвращает
datetimeсистемного времени ctime, т.е.os.path.getctime(). На некоторых системах (например, Unix), это время последнего изменения метаданных, а на других (например, Windows), это время создания файла.
-
Класс InMemoryStorage
-
class InMemoryStorage(location=None, base_url=None, file_permissions_mode=None, directory_permissions_mode=None)[source] -
Класс
InMemoryStorageреализует хранение файлов в памяти. Он не имеет сохранения, но может быть полезен для ускорения тестов, избегая доступа к диску.-
location[source] -
Абсолютный путь к имени каталога, назначенного файлам. По умолчанию принимает значение вашего параметра
MEDIA_ROOT.
-
base_url[source] -
URL для доступа к файлам, хранящимся по этому пути. По умолчанию принимает значение вашего параметра
MEDIA_URL.
-
file_permissions_mode[source] -
Права доступа к файлам в файловой системе, заданные для совместимости с
FileSystemStorage. По умолчаниюFILE_UPLOAD_PERMISSIONS.
-
directory_permissions_mode[source] -
Права доступа к каталогам в файловой системе, заданные для совместимости с
FileSystemStorage. По умолчаниюFILE_UPLOAD_DIRECTORY_PERMISSIONS.
-
Класс Storage
-
class Storage[source] -
Класс
Storageпредоставляет стандартизированный API для хранения файлов, а также набор стандартных поведений, которые все остальные системы хранения могут наследовать или переопределять по мере необходимости.Примечание
Когда методы возвращают наивные объекты
datetime, используемый эффективный часовой пояс будет текущим значениемos.environ['TZ']; обратите внимание, что это обычно устанавливается из параметраTIME_ZONEDjango.-
delete(name)[source] -
Удаляет файл, на который ссылается
name. Если удаление не поддерживается в целевой системе хранения, вместо этого будет вызвано исключениеNotImplementedError.
-
exists(name)[source] -
Возвращает
True, если файл, на который ссылается указанное имя, уже существует в системе хранения.
-
get_accessed_time(name)[source] -
Возвращает объект
datetime, представляющий время последнего доступа к файлу. Для систем хранения, которые не могут вернуть время последнего доступа, будет вызвано исключениеNotImplementedError.Если
USE_TZимеет значениеTrue, возвращает объектdatetimeс указанием часового пояса, в противном случае возвращает наивный объектdatetimeв локальном часовом поясе.
-
get_alternative_name(file_root, file_ext)[source] -
Возвращает альтернативное имя файла на основе параметров
file_rootиfile_ext, к имени файла перед расширением добавляется подчеркивание и случайная 7-символьная буквенно-цифровая строка.
-
get_available_name(name, max_length=None)[source] -
Возвращает имя файла на основе параметра
name, которое свободно и доступно для записи нового содержимого в целевой системе хранения.Длина имени файла не будет превышать
max_length, если указано. Если свободное уникальное имя файла не может быть найдено, будет выброшено исключениеSuspiciousFileOperation.Если файл с именем
nameуже существует, вызывается методget_alternative_name()для получения альтернативного имени.
-
get_created_time(name)[source] -
Возвращает объект
datetime, представляющий время создания файла. Для систем хранения, которые не могут вернуть время создания, будет вызвано исключениеNotImplementedError.Если
USE_TZимеет значениеTrue, возвращает объектdatetimeс указанием часового пояса, в противном случае возвращает наивный объектdatetimeв локальном часовом поясе.
-
get_modified_time(name)[source] -
Возвращает объект
datetime, представляющий время последнего изменения файла. Для систем хранения, которые не могут вернуть время последнего изменения, будет вызвано исключениеNotImplementedError.Если
USE_TZимеет значениеTrue, возвращает объектdatetimeс указанием часового пояса, в противном случае возвращает наивный объектdatetimeв локальном часовом поясе.
-
get_valid_name(name)[source] -
Возвращает имя файла на основе параметра
name, пригодное для использования в целевой системе хранения.
-
generate_filename(filename)[source] -
Проверяет
filenameпутем вызова методаget_valid_name()и возвращает имя файла, которое будет передано в методsave().Аргумент
filenameможет включать путь, возвращаемый методомFileField.upload_to. В этом случае путь не будет передан в методget_valid_name(), но будет добавлен в начало результирующего имени.Реализация по умолчанию использует операции
os.path. Переопределите этот метод, если это не подходит для вашего хранилища.
-
listdir(path)[source] -
Перечисляет содержимое указанного пути, возвращая кортеж из двух списков; первый элемент - каталоги, второй элемент - файлы. Для систем хранения, которые не могут предоставить такой список, вместо этого будет вызвано исключение
NotImplementedError.
-
open(name, mode='rb')[source] -
Открывает файл, заданный параметром
name. Обратите внимание, что, хотя возвращаемый файл гарантированно является объектомFile, он может на самом деле быть некоторым подклассом. В случае удаленного хранения файлов это означает, что чтение/запись может быть довольно медленным, поэтому будьте осторожны.
-
path(name)[source] -
Локальный путь в файловой системе, где файл может быть открыт с использованием стандартного модуля
open()Python. Для систем хранения, которые не доступны из локальной файловой системы, вместо этого будет вызвано исключениеNotImplementedError.
-
save(name, content, max_length=None)[source] -
Сохраняет новый файл с использованием системы хранения, предпочтительно с указанным именем. Если файл с таким именем уже существует
name, система хранения может изменить имя файла по мере необходимости, чтобы получить уникальное имя. Будет возвращено фактическое имя сохраненного файла.Аргумент
max_lengthпередается в методget_available_name().Аргумент
contentдолжен быть экземпляромdjango.core.files.Fileили объектом, подобным файлу, который может быть упакован вFile.
-
-
size(name)[source] -
Возвращает общий размер файла, в байтах, на который ссылается
name. Для систем хранения, которые не могут вернуть размер файла, это вызоветNotImplementedErrorвместо этого.
-
url(name)[source] -
Возвращает URL, по которому можно получить доступ к содержимому файла, на который ссылается
name. Для систем хранения, которые не поддерживают доступ по URL, это вызоветNotImplementedErrorвместо этого.
-
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/5.1/ref/files/storage/