Django Rest Framework: turn on pagination on a ViewSet (like ModelViewSet pagination)

For those using DRF 3.1 or higher, they are changing the default way pagination is handled. See http://www.django-rest-framework.org/topics/3.1-announcement/ for details.

Now if you want to enable pagination for a ModelViewSet you can either do it globally by setting in your settings.py file:

REST_FRAMEWORK = {
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
    'PAGE_SIZE': 100
}

Or if you just want it for one ModelViewSet you can manually set the pagination_class for just that viewset.

from rest_framework.pagination import PageNumberPagination

class StandardResultsSetPagination(PageNumberPagination):
    page_size = 100
    page_size_query_param = 'page_size'
    max_page_size = 1000

class FooViewSet(viewsets.ModelViewSet):
    pagination_class = StandardResultsSetPagination

This also allows you to tweak the way the pagination is handled for just that viewset.

DRF 3.1 also has introduced new types of default pagination schemes that you can use such as LimitOffset and Cursor.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)