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
Класс ¶
-
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']
; обратите внимание, что это обычно устанавливается из DjangoTIME_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
вместо этого будет повышаться этот показатель .
-