特に指定がない場合、通常の 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