#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. на самом деле это ответ. Спасибо