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

Доступ к текущему классу хранения

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

класс DefaultStorage

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

get_storage_class( import_path = None )

Возвращает класс или модуль, реализующий Storage 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'] . Обратите внимание, что это значение обычно устанавливается в настройках TIME_ZONE Django.

delete( имя )

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

exists( имя )

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

get_accessed_time( имя )

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

Если USE_TZ равно True , возвращает datetime сознательный объект , иначе datetime наивный объект возвращается в местном часовом поясе.

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

Возвращает другое имя файла , основанное на 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 ©2020 All rights reserved