5

Django REST フレームワークを使用しており、リクエストで提供される GET パラメータに基づいてリストをページ分割する必要があります。

設定で設定できることはわかってい'PAGINATE_BY': 10ますが、発信者がリクエストを行うときにページ番号を付けたい番号を指定できるようにしたいと考えています。

現在、次のシリアライザーがあります。

from api.models import Countries
from rest_framework import serializers

class CountrySerializer(serializers.Serializer):
    country_geoname_id = serializers.CharField(required=True)
    country_code = serializers.CharField(source="iso", max_length=2L, required=True)
    country_name = serializers.CharField(max_length=64L, required=True)

    def transform_iso(self, obj, value):
        return "country_code"

そして、私は次のビューを試しました:

@api_view(['GET'])
def country_list(request):
    """
    List all countries
    """
    if request.method == 'GET':
        queryset = Countries.objects.all()
        serializer = CountrySerializer(queryset, many=True, data=request.DATA)
        paginate_by = request.GET.get('limit', 10)
        return Response(serializer.data)

しかし、私は何かが欠けていると感じており、ドキュメントからそれを理解することができませんでした.

シリアライザーまたはビューでページネーションを行う必要がありますか?

前もって感謝します。

4

2 に答える 2

3

設定してみてくださいPAGINATE_BY_PARAM。このスニペットは、あなたをかなり近づけるはずです:

class CountryListView(ListAPIView):
    model = Countries
    serializer_class = CountrySerializer
    paginate_by_param = 'limit'

http://www.django-rest-framework.org/api-guide/pagination#pagination-in-the-generic-viewsを参照してください

私のスニペットでは、一般的なビューを使用して多くの繰り返しを取り除いています。それらも見てみることをお勧めします。http://www.django-rest-framework.org/api-guide/generic-views

于 2014-10-16T15:51:12.690 に答える