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.Атрибут
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_ZONEDjango.-
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/