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
¶
-
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
( имя ) ¶ datetime
То есть возвращает один час ctime системыos.path.getctime()
. В некоторых системах (например, Unix) это дата последнего изменения метаданных файла, в то время как в других системах (например, Windows) это дата создания файла.
-
В метод 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
.
-