2013-08-16 12 views
11

Jak przekazać odpowiedź Django dla Refraktorów dla dowolnego żądania do html. Przykład: lista zawierająca obiekty, a html - articles.html.Jak przekazać odpowiedź ramową django dla html?

Próbowałem za pomocą ramową reszta Response:

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

ja dostaję ten błąd:

""" AssertionError at /articles/ 

.accepted_renderer not set on Response """ 

gdzie poszło nie tak, proszę sugerować mnie.

+0

http://django-rest-framework.org/api-guide/renderers.html Sprawdzić HTML Renderer – Denis

+0

Powyższy link nie działa, ale ten powinien: http: //www.django -rest-framework.org/api-guide/renderers/ – rschwieb

Odpowiedz

33

Jeśli jest to pogląd oparty funkcja wykonany trzeba użyć dekorator @api_view wyświetlane poprawnie. Widziałem ten konkretny błąd z tego powodu (brak deklaracji widoku API w widokach opartych na funkcjach).

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

Przegapiłeś TemplateHTMLRenderer dekorator:

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

Ciągle otrzymuję TypeError: nie jest serializowany JSON. Wszystko wydaje się być dokładnie takie, jak sugerujesz. – Bobort

5

W moim przypadku po prostu zapomniał ustawić @api_view ([ 'PUT']) na widoku funkcji.

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.

Powiązane problemy