API хранилища файлов
Получение текущего класса хранилища
Django предоставляет два удобных способа доступа к текущему классу хранилища:
-
class DefaultStorage[source] -
DefaultStorageобеспечивает ленивый доступ к текущей системе хранения по умолчанию, как определено вDEFAULT_FILE_STORAGE.DefaultStorageиспользуетget_storage_class()внутри.
-
get_storage_class(import_path=None)[source] -
Возвращает класс или модуль, реализующий 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)[source] -
Класс
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()не будет генерировать исключение, если указанного файла не существует. -
Класс Storage
-
class Storage[source]
-
Класс
Storageпредоставляет стандартизированный API для хранения файлов, а также набор стандартных правил поведения, которые все другие системы хранения могут унаследовать или переопределить по мере необходимости.Примечание
Когда методы возвращают объекты
datetimeпо умолчанию, используемое эффективное часовое смещение будет текущим значениемos.environ['TZ']; обратите внимание, что обычно это устанавливается из настроек DjangoTIME_ZONE.-
accessed_time(name)[source] -
Возвращает объект
datetimeпо умолчанию, содержащий время последнего доступа к файлу. Для систем хранения, которые не могут вернуть время последнего доступа, это вызоветNotImplementedError.Устарело начиная с версии 1.10: Используйте
get_accessed_time()вместо этого.
-
created_time(name)[source] -
Возвращает объект
datetimeпо умолчанию, содержащий время создания файла. Для систем хранения, которые не могут вернуть время создания, это вызоветNotImplementedError.Устарело начиная с версии 1.10: Используйте
get_created_time()вместо этого.
-
delete(name)[source] -
Удаляет файл, на который ссылается
name. Если удаление не поддерживается целевой системой хранения, это вызоветNotImplementedError.
-
exists(name)[source] -
Возвращает
Trueесли файл с заданным именем уже существует в системе хранения, илиFalseесли имя доступно для нового файла.
-
get_accessed_time(name)[source] -
Новое в Django 1.10.
Возвращает
datetimeвремя последнего доступа к файлу. Для систем хранения, которые не могут вернуть время последнего доступа, это вызоветNotImplementedError.Если
USE_TZравноTrue, возвращает осознанныйdatetime, в противном случае возвращает неосознанныйdatetimeв локальном часовом поясе.
-
get_available_name(name, max_length=None)[source] -
Возвращает имя файла на основе параметра
name, которое свободно и доступно для записи нового содержимого в целевой системе хранения.Длина имени файла не будет превышать
max_length, если указано. Если уникальное свободное имя файла не может быть найдено, будет поднято исключениеSuspiciousFileOperation.Если файл с
nameуже существует, к имени файла перед расширением добавляется подчеркивание плюс случайная 7-символьная буквенно-цифровая строка.
-
get_created_time(name)[source] -
Новое в Django 1.10.
Возвращает
datetimeвремя создания файла. Для систем хранения, которые не могут вернуть время создания, это вызоветNotImplementedError.Если
USE_TZравноTrue, возвращает осознанныйdatetime, в противном случае возвращает неосознанныйdatetimeв локальном часовом поясе.
-
get_modified_time(name)[source] -
Новое в Django 1.10.
Возвращает
datetimeвремя последнего изменения файла. Для систем хранения, которые не могут вернуть время последнего изменения, это вызоветNotImplementedError.Если
USE_TZравноTrue, возвращает осознанныйdatetime, в противном случае возвращает неосознанныйdatetimeв локальном часовом поясе.
-
get_valid_name(name)[source] -
Возвращает имя файла на основе параметра
nameподходящее для использования в целевой системе хранения.
-
generate_filename(filename)[source] -
Новое в Django 1.10.
Проверяет
filename, вызвавget_valid_name()и возвращает имя файла, которое будет передано методуsave().Аргумент
filenameможет включать путь, возвращаемыйFileField.upload_to. В этом случае путь не будет передан вget_valid_name(), но будет добавлен к полученному имени.Стандартная реализация использует операции
os.path. Переопределите этот метод, если это не подходит для вашего хранилища.
-
listdir(path)[source] -
Отображает содержимое указанного пути, возвращая кортеж из двух списков: первый — каталоги, второй — файлы. Для систем хранения, которые не могут предоставить такой список, это вызовет
NotImplementedError.
-
modified_time(name)[source] -
Возвращает объект
datetimeпо умолчанию, содержащий время последнего изменения. Для систем хранения, которые не могут вернуть время последнего изменения, это вызоветNotImplementedError.Устарело начиная с версии 1.10: Используйте
get_modified_time()вместо этого.
-
open(name, mode='rb')[source] -
Открывает файл, указанный
name. Обратите внимание, что хотя возвращаемый файл гарантированно является объектомFile, он фактически может быть каким-либо подклассом. В случае удаленного хранения файлов это означает, что чтение/запись может быть довольно медленным, так что будьте осторожны.
-
path(name)[source] -
Локальный путь к файлу на файловой системе, где его можно открыть с помощью стандартных операций Python
open(). Для систем хранения, которые недоступны из локальной файловой системы, это вызоветNotImplementedError.
-
-
save(name, content, max_length=None)[source] -
Сохраняет новый файл с помощью системы хранения, предпочтительно с указанным именем. Если файл с таким именем
name, система хранения может изменить имя файла по необходимости, чтобы получить уникальное имя. Возвращается фактическое имя сохранённого файла.Аргумент
max_lengthпередается вget_available_name().Аргумент
contentдолжен быть экземпляромdjango.core.files.Fileили объектом, похожим на файл, который может быть обернут вFile.
-
size(name)[source] -
Возвращает общий размер файла, указанного с помощью
name, в байтах. Для систем хранения, которые не могут вернуть размер файла, будет вызваноNotImplementedError.
-
url(name)[source] -
Возвращает URL, по которому можно получить доступ к содержимому файла, указанного с помощью
name. Для систем хранения, которые не поддерживают доступ по URL, будет вызваноNotImplementedError.
-
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/1.10/ref/files/storage/