.содержание¶
Отрисованное содержимое ответа.  Метод .render() должен быть вызван, прежде чем можно будет получить доступ к .content.
В отличие от базовых объектов HttpResponse, объекты TemplateResponse сохраняют детали контекста, который был предоставлен представлением для вычисления ответа. Окончательный результат ответа не вычисляется до тех пор, пока он не понадобится, позже в процессе ответа.
‒ Django documentation
Фреймворк REST поддерживает согласование содержимого HTTP, предоставляя класс Response, который позволяет возвращать содержимое, которое может быть преобразовано в несколько типов содержимого, в зависимости от запроса клиента.
Класс Response является подклассом Django SimpleTemplateResponse.  Объекты Response инициализируются данными, которые должны состоять из собственных примитивов Python.  Затем фреймворк REST использует стандартное согласование содержимого HTTP для определения того, как он должен отобразить конечное содержимое ответа.
Нет необходимости использовать класс Response, вы также можете возвращать обычные объекты HttpResponse или StreamingHttpResponse из ваших представлений, если это необходимо.  Использование класса Response просто обеспечивает более удобный интерфейс для возврата согласованных по содержанию ответов Web API, которые могут быть преобразованы в различные форматы.
Если вы по каким-то причинам не хотите сильно настраивать REST-фреймворк, вы всегда должны использовать APIView класс или @api_view функцию для представлений, которые возвращают Response объекты.  Это гарантирует, что представление сможет выполнить согласование содержимого и выбрать подходящий рендерер для ответа, прежде чем он будет возвращен из представления.
Подпись: Response(data, status=None, template_name=None, headers=None, content_type=None)
В отличие от обычных объектов HttpResponse, вы не создаете объекты Response с отрисованным содержимым.  Вместо этого вы передаете нерендерированные данные, которые могут состоять из любых примитивов Python.
Рендереры, используемые классом Response, не могут нативно обрабатывать сложные типы данных, такие как экземпляры моделей Django, поэтому перед созданием объекта Response необходимо сериализовать данные в примитивные типы данных.
Вы можете использовать классы Serializer фреймворка REST для выполнения этой сериализации данных или использовать свою собственную сериализацию.
Аргументы:
data : Сериализованные данные для ответа.
status : Код статуса для ответа.  По умолчанию 200.  См. также status codes.
template_name : Имя шаблона, которое будет использоваться, если выбрано HTMLRenderer.
headers : Словарь HTTP-заголовков для использования в ответе.
content_type : Тип содержимого ответа.  Как правило, он устанавливается автоматически рендерером по результатам согласования содержимого, но в некоторых случаях может потребоваться явное указание типа содержимого.
Неотредактированные, сериализованные данные ответа.
Цифровой код состояния ответа HTTP.
Отрисованное содержимое ответа.  Метод .render() должен быть вызван, прежде чем можно будет получить доступ к .content.
template_name , если задано.  Требуется только если HTMLRenderer или какой-либо другой пользовательский рендерер шаблона является принятым рендерером для ответа.
Экземпляр рендерера, который будет использоваться для рендеринга ответа.
Устанавливается автоматически с помощью APIView или @api_view непосредственно перед возвратом ответа из представления.
Тип носителя, который был выбран на этапе согласования содержимого.
Устанавливается автоматически с помощью APIView или @api_view непосредственно перед возвратом ответа из представления.
Словарь дополнительной контекстной информации, которая будет передана методу рендеринга .render().
Устанавливается автоматически с помощью APIView или @api_view непосредственно перед возвратом ответа из представления.
Класс Response расширяет SimpleTemplateResponse , и все обычные атрибуты и методы также доступны для ответа.  Например, вы можете установить заголовки для ответа стандартным способом:
response = Response()
response['Cache-Control'] = 'no-cache'
Подпись: .render()
Как и любой другой TemplateResponse , этот метод вызывается для преобразования сериализованных данных ответа в конечное содержимое ответа.  Когда вызывается .render(), содержимое ответа будет установлено в результат вызова метода .render(data, accepted_media_type, renderer_context) на экземпляре accepted_renderer.
Обычно вам не нужно вызывать .render() самостоятельно, так как это обрабатывается стандартным циклом ответа Django.