В отличии от обычных объектов HttpResponse, объекты TemplateResponse передают детали контекста представления для того чтобы софрмировать ответ. Конечный результат высчитывается позже в процессе ответа, лишь когда это необходимо.— Документация Django
Response
, благодарая которому возможно возрвращать по-разному генерируемая сущность, в зависимости от запросов клиентов.Response
является производным от SimpleTemplateResponse
. Объекты Response
инициализируются с данными, которые должны состоять из нативных примитивов Python. Затем REST framework использует стандатрное согласование содержимого для того, чтобы определить, каким образом сгенерировать содержание конечного ответа.Response
- если требуется, вы можете возвращать обычные HttpResponse или StreamingHttpResponse объекты из ваших представлений. Использование класса Response
всего лишь предоставляет лучший интерфейс для возвращения ответов Web API, связяанных с согласованием содержимого, которое может быть сгенерированно в разные форматы.APIView
или функцию @api_view
для представлений, которые возвращают объекты Response
. Таким образом представление сможет согласовывать содержимое и генерировать нужную информацию для ответа перед тем, как он вернулся от представления.Response(data, status=None, template_name=None, headers=None, content_type=None)
HttpResponse
, вы не создаете экземпляр Response
объекта с генерируемой сущностью. Вместо этого вы передаете ему неотрендеренные данные, который могут состоять из примитивов Python.Response
не могут нативно обрабатывать сложные типы данных, такие как экземпляры моделей Django, поэтому перед созданием объекта Response
вам следует преобразовать данные в более простой тип.Serializer
REST framework, или своими собственным преобразователем.data
: Сериализированные данные для ответа.status
: Код состояния для ответа. По умолчанию 200. См также коды состояния.template_name
: Имя шаблона, которое используется в случае, если выбран HTMLRenderer
.headers
: Словарь HTTP заголовков, использующихся в ответах.content_type
: Тип содержания ответа. Как правило автоматически устанавливается через согласование содержимого, но могут возникнуть случаи, когда потребуется особо уточнить тип сущности..render()
должен быть вызван до обращения к .content
.APIView
или @api_view
сразу после получения ответа от представления.APIView
или @api_view
сразу после получения ответа от представления..render()
.APIView
или @api_view
сразу после получения ответа от представления.Response
расширяет SimpleTemplateResponse
, при этом все обычные атрибуты и методы также доступны. Например можно оформить заголовки ответа стандартным способом:.render()
.render()
, сущность ответа будет сводиться к результату вызова метода .render(data, accepted_media_type, renderer_context)
экземпляра accepted_renderer
..render()
, так как он вшит в цикл ответов Django по умолчанию.