Skip to content

Commit 688bba6

Browse files
authored
Adds pagination to the products api endpoint (#225)
1 parent 5c4d938 commit 688bba6

2 files changed

Lines changed: 9 additions & 0 deletions

File tree

backend/core/settings/base.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@
5353
'rest_framework.filters.SearchFilter',
5454
'rest_framework.filters.OrderingFilter',
5555
],
56+
'DEFAULT_PAGINATION_CLASS' : 'rest_framework.pagination.PageNumberPagination',
57+
'PAGE_SIZE': 10,
5658
}
5759

5860
MIDDLEWARE = [

backend/products/views.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,17 @@
11
from rest_framework.generics import ListAPIView, RetrieveAPIView
22
from rest_framework.filters import SearchFilter, OrderingFilter
3+
from rest_framework.pagination import PageNumberPagination
34
from django_filters.rest_framework import DjangoFilterBackend
45
from django_filters import rest_framework as filters
56

67
from .models import Product
78
from .serializers import ProductSerializer
89

10+
class ProductPagination(PageNumberPagination):
11+
page_size = 15
12+
page_size_query_param = 'page_size'
13+
max_page_size = 100
14+
915
class ProductFilter(filters.FilterSet):
1016
# simple text filters
1117
name = filters.CharFilter(lookup_expr='icontains')
@@ -31,6 +37,7 @@ class ListProductView(ListAPIView):
3137
serializer_class = ProductSerializer
3238
filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
3339
filterset_class = ProductFilter
40+
pagination_class = ProductPagination
3441

3542
search_fields = ['name', 'description', 'tags', 'seller', 'type']
3643

0 commit comments

Comments
 (0)