Как передать 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 """
Где я ошибся, пожалуйста, предложите мне.
Ответы
Ответ 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 непосредственно перед возвратом ответа из представления.
Ответ 3
Добавили ли вы TemplateHTMLRenderer
в свои настройки?
http://www.django-rest-framework.org/api-guide/renderers/#setting-the-renderers
Ответ 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')