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

Получение текущего класса хранилища

Django предоставляет два удобных способа доступа к текущему классу хранилища:

класс DefaultStorage

DefaultStorageобеспечивает ленивый доступ к текущей системе хранения по умолчанию, как определено в DEFAULT_FILE_STORAGE. DefaultStorageиспользует get_storage_class()внутренне.

get_storage_class( import_path = None )

Возвращает класс или модуль, реализующий API хранилища.

При вызове без import_pathпараметра get_storage_class вернет текущую систему хранения по умолчанию, как определено DEFAULT_FILE_STORAGE. Если import_pathпредоставляется, get_storage_classбудет пытаться импортировать класс или модуль по заданному пути и в случае успеха вернет его. Если импорт завершится неудачно, возникнет исключение.

FileSystemStorageКласс

classFileSystemStorage ( 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( имя )

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

Изменено в Django 3.1:

В метод pathlib.Pathдобавлена поддержка FileSystemStorage.save().

StorageКласс

класс Storage

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

Примечание

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

delete( имя )

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

exists( имя )

Возвращает, Trueесли файл, на который ссылается данное имя, уже существует в системе хранения или Falseесли имя доступно для нового файла.

get_accessed_time( имя )

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

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

get_alternative_name( корневой_файл , файл_внешний )

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

get_available_name( name , max_length = None )

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

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

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

get_created_time( имя )

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

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

get_modified_time( имя )

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

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

get_valid_name( имя )

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

generate_filename( имя файла )

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

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

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

listdir( путь )

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

open( имя , режим = 'rb' )

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

path( имя )

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

save( имя , содержание , max_length = None )

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

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

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

size( имя )

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

url( имя )

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

Copyright ©2021 All rights reserved