0

特に指定がない場合、通常の html 応答を返すビューを作成しようとしています。要求があれば、django の rest_framework を使用して JSON を返します。

テンプレート内のコンテキストにアクセスしたい部分を除いて、すべてうまくいきます。

写真に基づいた小さなコード例を次に示します。

@api_view(('GET', ))
@renderer_classes((TemplateHTMLRenderer, UnicodeJSONRenderer, JSONRenderer, BrowsableAPIRenderer))
def index(request):
    queryset = Picture.objects.all()

    page = request.GET.get('page')
    paginator = Paginator(queryset, 25)
    try:
        pictures = paginator.page(page)
    except PageNotAnInteger:
        pictures = paginator.page(1)
    except EmptyPage:
        pictures = paginator.page(paginator.num_pages)

    serializer_context = {'request': request, 'pictures': pictures, 'filter': FilterForm()}
    serializer = PaginatedPictureSerializer(pictures, context=serializer_context)
    return Response(serializer.data, template_name='index.html')

テンプレート内のコンテキストにアクセスしたい場合の新しい:

{% if pictures %}
      {% for picture in pictures %}
          ...
      {% endfor %}
{% else %}
    <p>No pictures are available.</p>
{% endif %}

結果は常に次のとおりです。使用できる画像はありません (デバッグでも同じことが言えます)。

編集: 要求に応じて

class PictureSerializer(serializers.ModelSerializer):

    class Meta:
        model = Picture


class PaginatedPictureSerializer(pagination.PaginationSerializer):

    class Meta:
        object_serializer_class = PictureSerializer
4

1 に答える 1