Добавьте разбивку на страницы в фреймворк Django Rest

#django #django-rest-framework #django-pagination

Вопрос:

Я пытаюсь использовать PageNumberPagination в DRF anf для этого я изменил settings.py файл, подобный следующему:

 REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework_simplejwt.authentication.JWTAuthentication',
    ),
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
    # 'PAGE_SIZE':10
}
 

и views.py

из rest_framework.pagination импортируйте PageNumberPagination

 class GrnListAPIView(generics.ListAPIView):
    serializer_class = GrnListSerializer
    pagination_class = PageNumberPagination
    permission_classes = (permissions.IsAuthenticated, GRNViewPermission)

    def get_queryset(self):
        return Grn.objects.all()
 

теперь, когда я пытаюсь получить доступ к данным, используя URL-адрес:

 http://localhost:8000/grns/?page=1amp;page_size=10
 

Это дает мне все данные, а не возвращает 10 объектов. Это прекрасно работает, когда я раскомментирую PAGE_SIZE , но возвращает только 10 значений на страницу, что понятно, как я уже упоминал
page_size=10 в моих параметрах, но когда я изменяю его на 20 или 30, он все равно возвращает тот же объем данных вместо 20 или 30 объектов.

Комментарии:

1.Похоже, вы пропустили ту часть, где вы настраиваете имя параметра запроса, которое будет рассматриваться как размер страницы. Вам необходимо создать пользовательский класс разбиения на страницы и наследовать от PageNumberPagination django-rest-framework.org/api-guide/pagination/… а затем укажите page_size_query_param = 'page_size' , как это делается в примере django-rest-framework.org/api-guide/pagination/.… Новый класс должен использоваться в 'DEFAULT_PAGINATION_CLASS'

2. на самом деле это ответ. Спасибо