21

如何将任何请求的 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 """

我哪里出错了,请建议我。

4

4 回答 4

53

如果它是基于函数的视图,则需要使用 @api_view 装饰器才能正确显示。我已经看到由于这个确切原因而发生了这个特定错误(基于函数的视图中缺少 API 视图声明)。

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')
于 2013-12-18T21:34:57.003 回答
9

就我而言,只是忘记在视图函数上设置 @api_view(['PUT']) 。

因此,
.accepted_renderer
将用于渲染未设置为视图的响应的渲染器实例。
在视图返回响应之前由 APIView 或 @api_view 自动设置。

于 2016-03-25T11:21:24.997 回答
4

TemplateHTMLRenderer在设置中添加了吗?

http://www.django-rest-framework.org/api-guide/renderers/#setting-the-renderers

于 2013-08-16T13:22:23.053 回答
1

你错过了TemplateHTMLRenderer装饰器:

@api_view(('GET',))
@renderer_classes((模板HTMLRenderer,))
def 文章(请求,格式=无):
    data= {'articles': Article.objects.all() }
    返回响应(数据,模板名称='articles.html')
于 2015-05-13T14:45:41.830 回答