API для хранения файлов¶
Получение класса хранения по умолчанию¶
Django предоставляет удобные способы доступа к классу хранилища по умолчанию:
-
class
DefaultStorage[исходный код]¶ DefaultStorageобеспечивает ленивый доступ к текущей системе хранения по умолчанию, определеннойDEFAULT_FILE_STORAGE.DefaultStorageиспользуетget_storage_class()внутренне.
-
default_storage¶ default_storageявляется экземпляромDefaultStorage.
-
get_storage_class(import_path=None)[исходный код]¶ Возвращает класс или модуль, реализующий API хранилища.
При вызове без параметра
import_pathget_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(name)[исходный код]¶ Возвращает
datetimeсистемное время ctime, т.е.os.path.getctime(). В некоторых системах (например, Unix) это время последнего изменения метаданных, а в других (например, Windows) - время создания файла.
-
Класс Storage¶
-
class
Storage[исходный код]¶ Класс
Storageпредоставляет стандартизированный API для хранения файлов, а также набор стандартных моделей поведения, которые все другие системы хранения могут наследовать или переопределять по мере необходимости.Примечание
Когда методы возвращают наивные
datetimeобъекты, используемым эффективным часовым поясом будет текущее значениеos.environ['TZ']; обратите внимание, что оно обычно устанавливается изTIME_ZONEDjango.-
delete(name)[исходный код]¶ Удаляет файл, на который ссылается
name. Если удаление не поддерживается на целевой системе хранения, то вместо этого будет вызвано сообщениеNotImplementedError.
-
exists(name)[исходный код]¶ Возвращает
True, если файл, на который ссылается данное имя, уже существует в системе хранения, илиFalse, если имя доступно для нового файла.
-
get_accessed_time(name)[исходный код]¶ Возвращает
datetimeвремя последнего обращения к файлу. Для систем хранения, не способных вернуть время последнего доступа, это значение будет равноNotImplementedError.Если
USE_TZравноTrue, то возвращается осознанноеdatetime, иначе возвращается наивноеdatetimeв местном часовом поясе.
-
get_alternative_name(file_root, file_ext)[исходный код]¶ Возвращает альтернативное имя файла, основанное на параметрах
file_rootиfile_ext, к имени файла добавляется символ подчеркивания плюс случайная 7-символьная буквенно-цифровая строка перед расширением.
-
get_available_name(name, max_length=None)[исходный код]¶ Возвращает имя файла на основе параметра
name, который свободен и доступен для записи нового содержимого на целевой системе хранения.Длина имени файла не должна превышать
max_length, если оно предоставлено. Если свободное уникальное имя файла не может быть найдено, будет выдано исключениеSuspiciousFileOperation.Если файл с именем
nameуже существует, вызываетсяget_alternative_name()для получения альтернативного имени.
-
get_created_time(name)[исходный код]¶ Возвращает
datetimeвремени создания файла. Для систем хранения, не способных вернуть время создания, это значение будет равноNotImplementedError.Если
USE_TZравноTrue, то возвращается осознанноеdatetime, иначе возвращается наивноеdatetimeв местном часовом поясе.
-
get_modified_time(name)[исходный код]¶ Возвращает
datetimeвремя последнего изменения файла. Для систем хранения, не способных вернуть время последнего изменения, это значение будет равноNotImplementedError.Если
USE_TZравноTrue, то возвращается осознанноеdatetime, иначе возвращается наивноеdatetimeв местном часовом поясе.
-
get_valid_name(name)[исходный код]¶ Возвращает имя файла, основанное на параметре
name, которое подходит для использования на целевой системе хранения данных.
-
generate_filename(filename)[исходный код]¶ Проверяет
filenameвызовомget_valid_name()и возвращает имя файла для передачи в методsave().Аргумент
filenameможет включать путь, возвращаемыйFileField.upload_to. В этом случае путь не будет передан вget_valid_name(), а будет добавлен обратно к результирующему имени.Реализация по умолчанию использует операции
os.path. Переопределите этот метод, если это не подходит для вашего хранилища.
-
listdir(path)[исходный код]¶ Перечисляет содержимое указанного пути, возвращая кортеж из двух списков: первый элемент - каталоги, второй - файлы. Для систем хранения, которые не могут предоставить такой список, вместо этого будет выдано сообщение
NotImplementedError.
-
open(name, mode='rb')[исходный код]¶ Открывает файл, указанный
name. Обратите внимание, что хотя возвращаемый файл гарантированно является объектомFile, на самом деле это может быть какой-то подкласс. В случае удаленного хранения файлов это означает, что чтение/запись могут быть довольно медленными, поэтому будьте внимательны.
-
path(name)[исходный код]¶ Путь к локальной файловой системе, где файл может быть открыт с помощью стандартной команды Python
open(). Для систем хранения, недоступных из локальной файловой системы, вместо этого будет выведеноNotImplementedError.
-
save(name, content, max_length=None)[исходный код]¶ Сохраняет новый файл с помощью системы хранения, предпочтительно с указанным именем. Если файл с таким именем уже существует
name, система хранения может изменить имя файла, если это необходимо для получения уникального имени. Будет возвращено фактическое имя сохраненного файла.Аргумент
max_lengthпередается вместе сget_available_name().Аргумент
contentдолжен быть экземпляромdjango.core.files.Fileили файлоподобным объектом, который может быть обернут вFile.
-
size(name)[исходный код]¶ Возвращает общий размер, в байтах, файла, на который ссылается
name. Для систем хранения, которые не могут вернуть размер файла, вместо этого возвращается значениеNotImplementedError.
-
url(name)[исходный код]¶ Возвращает URL, по которому можно получить доступ к содержимому файла, на который ссылается
name. Для систем хранения, которые не поддерживают доступ по URL, вместо этого возвращаетсяNotImplementedError.
-