Подтвердить что ты не робот

Как передать django rest framework ответ на html?

Как передать ответ django restframework для любого запроса на html. Пример: список, содержащий объекты, и html - articles.html.

Я попытался использовать систему отдыха Response:

data= {'articles': Article.objects.all() }
return Response(data, template_name='articles.html')

Я получаю эту ошибку:

""" AssertionError at /articles/

.accepted_renderer not set on Response """

Где я ошибся, пожалуйста, предложите мне.

4b9b3361

Ответ 1

Если это функция, основанная на представлении, вам необходимо использовать декоратор @api_view для правильного отображения. Я видел, что эта конкретная ошибка происходит по этой точной причине (отсутствует объявление API View в представлениях, основанных на функциях).

from rest_framework.decorators import api_view
# ....

@api_view(['GET', 'POST', ])
def articles(request, format=None):
    data= {'articles': Article.objects.all() }
    return Response(data, template_name='articles.html')

Ответ 2

В моем случае просто забыл установить @api_view (['PUT']) в функции просмотра.

Итак,
.accepted_renderer
Экземпляр рендеринга, который будет использоваться для рендеринга ответа, не установленного для представления.
Автоматически устанавливайте APIView или @api_view непосредственно перед возвратом ответа из представления.

Ответ 4

Вы пропустили TemplateHTMLRenderer decorator:

@api_view(('GET',))
@renderer_classes((TemplateHTMLRenderer,))
def articles(request, format=None):
    data= {'articles': Article.objects.all() }
    return Response(data, template_name='articles.html')