2013-08-16 86 views
11

如何將任何請求的django restframework響應傳遞給html。 示例:包含對象的列表,html爲articles.html。如何將django rest框架響應傳遞給html?

我試圖通過REST框架響應:

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

我收到此錯誤:

""" AssertionError at /articles/ 

.accepted_renderer not set on Response """ 

我哪裏錯了,請給我建議。

+0

http://django-rest-framework.org/api-guide/renderers.html尋找HTML渲染 – Denis

+0

上面的鏈接不起作用,但是這一次應該是:http://www.django -rest-framework.org/api-guide/renderers/ – rschwieb

回答

33

如果它是一個基於功能視圖,你讓需要使用@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') 
1

你錯過了TemplateHTMLRenderer裝飾:

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

我不斷收到TypeError:不是JSON可序列化的。一切似乎都完全按照你的建議。 – Bobort

5

對我來說,只是忘了在視圖功能設置@api_view([ '把'])。

So,
.accepted_renderer
The renderer instance that will be used to render the response not set for view.
Set automatically by the APIView or @api_view immediately before the response is returned from the view.

相關問題