Объект File¶
Модуль django.core.files и его подмодули содержат встроенные классы для базовой обработки файлов в Django.
Класс File¶
- 
class File(file_object, name=None)[исходный код]¶
- Класс - Fileпредставляет собой тонкую оболочку вокруг объекта Python file с некоторыми специфичными для Django дополнениями. Внутри Django использует этот класс, когда ему нужно представить файл.- Объекты - Fileимеют следующие атрибуты и методы:- 
name¶
- Имя файла, включая относительный путь от - MEDIA_ROOT.
 - 
size¶
- Размер файла в байтах. 
 - 
file¶
- Базовый file object, который этот класс обертывает. - Будьте осторожны с этим атрибутом в подклассах. - Некоторые подклассы - File, включая- ContentFileи- FieldFile, могут заменять этот атрибут на объект, отличный от Python file object. В этих случаях этот атрибут может сам быть подклассом- File(и не обязательно тем же подклассом). По возможности используйте атрибуты и методы самого подкласса, а не атрибуты подкласса- file.
 - 
mode¶
- Режим чтения/записи для файла. 
 - 
open(mode=None)[исходный код]¶
- Откройте или повторно откройте файл (который также выполняет - File.seek(0)). Аргумент- 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()будет вызываться после удаления файла.