Spec-Zone.ru › Django 6.0

Объект File

Модуль django.core.files и его подмодули содержат встроенные классы для базовой работы с файлами в Django.

Класс File

class File(file_object, name=None) [исходный код]

Класс File представляет собой тонкую обёртку над файловым объектом Python с некоторыми дополнениями, специфичными для Django. Внутри себя Django использует этот класс, когда требуется представить файл.

Объекты File имеют следующие атрибуты и методы:

name

Имя файла, включая относительный путь от MEDIA_ROOT.

size [исходный код]

Размер файла в байтах.

file

Базовый файловый объект, который оборачивает этот класс.

Будьте осторожны с этим атрибутом в подклассах.

Некоторые подклассы File, включая ContentFile и FieldFile, могут заменять этот атрибут объектом, отличным от файлового объекта Python. В таких случаях этот атрибут сам может быть подклассом File (и не обязательно тем же самым подклассом). По возможности используйте атрибуты и методы самого подкласса, а не атрибута file этого подкласса.

mode

Режим чтения/записи для файла.

open(mode=None, *args, **kwargs) [исходный код]

Открывает или повторно открывает файл (что также выполняет File.seek(0)). Аргумент mode принимает те же значения, что и встроенная функция Python open(). Аргументы *args и **kwargs передаются после mode во встроенную функцию Python open().

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

Его можно использовать как контекстный менеджер, например: with file.open() as f:.

__iter__() [исходный код]

Итерирует по файлу, возвращая по одной строке за раз.

chunks(chunk_size=None) [исходный код]

Итерирует по файлу, возвращая «фрагменты» заданной величины. Значение chunk_size по умолчанию составляет 64 КБ.

Это особенно полезно для очень больших файлов, поскольку позволяет передавать их потоком с диска и избегать сохранения всего файла в памяти.

multiple_chunks(chunk_size=None) [исходный код]

Возвращает True, если файл достаточно велик и для доступа ко всему его содержимому требуется несколько фрагментов при заданном chunk_size.

close() [исходный код]

Закрывает файл.

В дополнение к перечисленным методам File предоставляет следующие атрибуты и методы своего объекта file: encoding, fileno, flush, isatty, newlines, read, readinto, readline, readlines, seek, tell, truncate, write, writelines, readable(), writable() и seekable().

Класс ContentFile

class ContentFile(content, name=None) [исходный код]

Класс ContentFile наследуется от File, но в отличие от File работает со строковым содержимым (байты также поддерживаются), а не с реальным файлом. Например:

from django.core.files.base import ContentFile

f1 = ContentFile("esta frase está en español")
f2 = ContentFile(b"these are bytes")

Класс ImageFile

class ImageFile(file_object, name=None) [исходный код]

Django предоставляет встроенный класс специально для изображений. django.core.files.images.ImageFile наследует все атрибуты и методы File, а также дополнительно предоставляет следующее:

width [исходный код]

Ширина изображения в пикселях.

height [исходный код]

Высота изображения в пикселях.

Дополнительные методы для файлов, прикреплённых к объектам

Любой File, связанный с объектом (как в случае с Car.photo ниже), также имеет пару дополнительных методов:

File.save(name, content, save=True)

Сохраняет новый файл с указанным именем и содержимым. Это не заменит существующий файл, а создаст новый файл и обновит объект так, чтобы он указывал на него. Если аргумент save равен True, метод модели save() будет вызван после сохранения файла. То есть следующие две строки:

>>> car.photo.save("myphoto.jpg", content, save=False)
>>> car.save()

эквивалентны:

>>> car.photo.save("myphoto.jpg", content, save=True)

Обратите внимание, что аргумент content должен быть экземпляром File или подкласса File, такого как ContentFile.

File.delete(save=True)

Удаляет файл из экземпляра модели и удаляет базовый файл. Если параметр save равен True, метод модели save() будет вызван после удаления файла.

© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/6.0/ref/files/file/

Spec-Zone.ru

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