2
the docsのように、ビューセットにカスタムページネーションクラスを実装しようとしていますが、ページ設定は単なる1つのことではありません。私のViewSetのコードは次のとおりです。django rest framework v3.6でカスタムページネーションクラスを使用するには
from rest_framework import status, permissions, viewsets
from rest_framework.pagination import PageNumberPagination
class ProductViewSetPagination(PageNumberPagination):
page_size = 5
page_size_query_param = 'page_size'
max_page_size = 1000
class ProductViewSet(viewsets.ModelViewSet):
permission_classes = (permissions.IsAuthenticated,)
serializer_class = ProductSerializer
pagination_class = ProductViewSetPagination
# ...
def list(self, request):
#get_queryset is also overridden to accept filters in query_params
queryset = self.get_queryset()
if not queryset.exists():
return Response(status=status.HTTP_204_NO_CONTENT)
serializer = self.get_serializer(queryset, many=True)
return Response(serializer.data)
私もsettings.pyファイルにいくつかのデフォルトを追加しましたが、私はまだproduct-list
ビューに単一ページにすべての製品のインスタンスを取得しています。 URLにpage
とpage_size
というクエリパラメータを追加しようとしました。これは何も変わらない。
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 10,
私は何が欠けていますか?
デフォルトのリストのメソッドを使用するか、それを上書きしますか? –
オーバーライドされました。私はコードを追加しました。 – Escher
リストメソッドをオーバーライドすると、独自のページネゴシエーションを実装する必要があります。 – Escher