21

HTMLへのリクエストに対してdjango restframeworkレスポンスを渡す方法。例: オブジェクトを含むリスト。html は article.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((TemplateHTMLRenderer,))
デフォルトの記事 (リクエスト、フォーマット = なし):
    data= {'記事': Article.objects.all() }
    レスポンスを返します(データ、テンプレート名='articles.html')
于 2015-05-13T14:45:41.830 に答える