Spec-Zone.ru › Django 1.8

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

Получение текущего класса хранилища

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

class DefaultStorage [source]

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

get_storage_class(import_path=None) [source]

Возвращает класс или модуль, реализующий 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) [source]

Класс FileSystemStorage реализует базовые операции хранения файлов в локальной файловой системе. Он наследуется от Storage и предоставляет реализации всех публичных методов.

location

Абсолютный путь к каталогу, в котором будут храниться файлы. По умолчанию соответствует значению настройки MEDIA_ROOT.

base_url

URL, используемый для доступа к файлам, хранящимся по этому пути. По умолчанию соответствует значению настройки MEDIA_URL.

file_permissions_mode

Права доступа к файлу при сохранении. По умолчанию соответствуют значению настройки FILE_UPLOAD_PERMISSIONS.

Атрибут file_permissions_mode был добавлен. Ранее файлы всегда получали права FILE_UPLOAD_PERMISSIONS.

directory_permissions_mode

Права доступа к каталогу при сохранении. По умолчанию соответствуют значению настройки FILE_UPLOAD_DIRECTORY_PERMISSIONS.

Атрибут directory_permissions_mode был добавлен. Ранее каталоги всегда получали права FILE_UPLOAD_DIRECTORY_PERMISSIONS.

Примечание

Метод FileSystemStorage.delete() не вызовет исключение, если заданный файл не существует.

Класс хранилища

class Storage [source]

Класс Storage предоставляет стандартизированный API для хранения файлов, а также набор стандартных поведений, которые все другие системы хранения могут унаследовать или переопределить по мере необходимости.

Примечание

Для методов, возвращающих объекты naive datetime , используемое эффективное часовое пояс будет текущим значением os.environ['TZ']; обратите внимание, что обычно это устанавливается из TIME_ZONE Django.

accessed_time(name) [source]

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

created_time(name) [source]

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

delete(name) [source]

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

exists(name) [source]

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

get_available_name(name, max_length=None) [source]

Возвращает имя файла, основанное на параметре name , которое свободно и доступно для записи нового содержимого в целевой системе хранения.

Длина имени файла не будет превышать max_length, если указано. Если уникальное свободное имя файла не может быть найдено, будет возбуждено исключение SuspiciousFileOperation.

Если файл с name уже существует, к имени файла перед расширением добавляется нижнее подчеркивание и случайная 7-символьная буквенно-цифровая строка.

Ранее к имени файла добавлялось нижнее подчеркивание, за которым следовала цифра (например, "_1", "_2", и т. д.) до тех пор, пока не находилось доступное имя в целевом каталоге. Злоумышленник мог использовать этот детерминированный алгоритм для создания атаки типа отказа в обслуживании. Эта смена была также внесена в Django 1.6.6, 1.5.9 и 1.4.14.

Аргумент max_length был добавлен.

get_valid_name(name) [source]

Возвращает имя файла, основанное на параметре name , подходящее для использования в целевой системе хранения.

listdir(path) [source]

Перечисляет содержимое указанного пути, возвращая кортеж из двух списков; первый элемент — каталоги, второй — файлы. Для систем хранения, которые не могут предоставить такое перечисление, будет возбуждено исключение NotImplementedError.

modified_time(name) [source]

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

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.

Аргумент max_length был добавлен.

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.8/ref/files/storage/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API