最近、私は drf ページネーション クラス、PageNumberPagination を使用していました。奇妙なバグに遭遇した可能性があります。公式ドキュメントでは、PageNumberPagination のページ サイズをオーバーライドするには、以下に示すように、ページ サイズの構成をオーバーライドするカスタム ページネータを作成する必要があります。
class StandardResultsSetPagination(PageNumberPagination):
page_size = 100
page_size_query_param = 'page_size'
max_page_size = 1000
class BillingRecordsView(generics.ListAPIView):
queryset = Billing.objects.all()
serializer_class = BillingRecordsSerializer
pagination_class = LargeResultsSetPagination
しかし、私が同じことをしようとしたとき、カスタムページネーターはデフォルト設定を 100 として使用していました。これが私が使用した私のスニペットです
class StandardResultsSetPagination(PageNumberPagination):
page_size = 10
page_size_query_param = 'page_size'
max_page_size = 100
class TrendingClassesView(ListAPIView):
pagination_class = StandardResultsSetPagination
serializer_class = BaseClassTileSerializer
queryset = BaseClass.objects.all()
ある瞬間、コードは正常に動作しましたが、ページサイズをしばらくいじった後、ページネーターが機能しなくなったので、ページサイズを機能させるために以下のようなことをしなければなりません
class StandardResultsSetPagination(PageNumberPagination):
page_size = 10
page_size_query_param = 'page_size'
max_page_size = 100
def get_page_size(self, request):
return 10
これは私の残りのフレームワーク設定です
REST_FRAMEWORK = {
'UPLOADED_FILES_USE_URL':
True,
'DEFAULT_PARSER_CLASSES': [
'rest_framework.parsers.JSONParser',
'rest_framework.parsers.MultiPartParser',
'rest_framework.parsers.FileUploadParser',
'rest_framework.parsers.FormParser',
],
"TIME_FORMAT":
"%I:%M %p",
"TIME_INPUT_FORMATS": ["%I:%M %p", "%H:%M"],
}
私は何か間違ったことをしているかもしれないと思いますが、間違いを見つけることができません。