Comment passer Django réponse restframework pour toute demande à html. Exemple: Une liste qui contient des objets, et html être articles.html.
J'ai essayé en utilisant le cadre de repos Réponse:
data= {'articles': Article.objects.all() }
return Response(data, template_name='articles.html')
Je reçois cette erreur:
""" AssertionError at /articles/
.accepted_renderer not set on Response """
Où je me suis trompé, veuillez me suggérer.
S'il s'agit d'une vue basée sur une fonction, vous avez dû utiliser un décorateur @api_view pour afficher correctement. J'ai vu cette erreur particulière se produire pour cette raison exacte (déclaration API View manquante dans les vues basées sur les fonctions).
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')
Dans mon cas, j'ai juste oublié de définir @api_view (['PUT']) sur la fonction d'affichage.
Alors,
.accepted_renderer
L'instance de rendu qui sera utilisée pour rendre la réponse non définie pour la vue.
Défini automatiquement par APIView ou @api_view immédiatement avant le retour de la réponse de la vue.
Avez-vous ajouté TemplateHTMLRenderer
dans vos paramètres?
http://www.Django-rest-framework.org/api-guide/renderers/#setting-the-renderers
TemplateHTMLRenderer
décorateur:
@ api_view (('GET',)) @ renderer_classes ((TemplateHTMLRenderer,)) def articles (demande, format = Aucun): data = {'articles': Article.objects.all ()} renvoie une réponse (data, template_name = 'articles.html')