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()не будет генерировать исключение, если указанного файла не существует.-
get_created_time(name)[source] -
Возвращает
datetimeсистемного времени ctime, т.е.os.path.getctime(). На некоторых системах (например, Unix) это время последнего изменения метаданных, а на других (например, Windows) — время создания файла.
-
Класс 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.11/ref/files/storage/