From fb952a80604204b2290a8c1cebc8382d8da8d18d Mon Sep 17 00:00:00 2001 From: xianfuxing Date: Sat, 14 Jul 2018 16:29:17 +0800 Subject: [PATCH] # add pagination --- apps/mosquito/api/pagination.py | 10 ++++++++++ apps/mosquito/api/views.py | 3 +++ apps/smart/api/views.py | 3 +++ 3 files changed, 16 insertions(+) create mode 100644 apps/mosquito/api/pagination.py diff --git a/apps/mosquito/api/pagination.py b/apps/mosquito/api/pagination.py new file mode 100644 index 0000000..6d381e4 --- /dev/null +++ b/apps/mosquito/api/pagination.py @@ -0,0 +1,10 @@ +from rest_framework.pagination import LimitOffsetPagination, PageNumberPagination + + +class PostLimitOffsetPagination(LimitOffsetPagination): + max_limit = 10 + default_limit = 4 + + +class PostPageNumberPagination(PageNumberPagination): + page_size = 4 diff --git a/apps/mosquito/api/views.py b/apps/mosquito/api/views.py index b3ca906..a3b29c7 100644 --- a/apps/mosquito/api/views.py +++ b/apps/mosquito/api/views.py @@ -8,12 +8,14 @@ from rest_framework.permissions import IsAuthenticated from rest_framework.filters import SearchFilter, OrderingFilter from django.db.models import Q from ..models import Mosquito, MosqPost +from .pagination import PostLimitOffsetPagination, PostPageNumberPagination from .serializers import MosqListSerializer, MosqPostListSerializer class MosquitoListAPIView(ListAPIView): serializer_class = MosqListSerializer filter_backends = [SearchFilter, OrderingFilter] + pagination_class = PostLimitOffsetPagination search_fields = ['name', 'device_id', 'region'] def get_queryset(self, *args, **kwargs): @@ -31,6 +33,7 @@ class MosquitoListAPIView(ListAPIView): class MosquitoPostListAPIView(ListAPIView): serializer_class = MosqPostListSerializer filter_backends = [SearchFilter, OrderingFilter] + pagination_class = PostLimitOffsetPagination search_fields = ['mosq__name', 'mosq__region'] def get_queryset(self, *args, **kwargs): diff --git a/apps/smart/api/views.py b/apps/smart/api/views.py index abacd4f..9e513b8 100644 --- a/apps/smart/api/views.py +++ b/apps/smart/api/views.py @@ -7,6 +7,7 @@ from rest_framework.generics import ( from rest_framework.permissions import IsAuthenticated from rest_framework.filters import SearchFilter, OrderingFilter from django.db.models import Q +from mosquito.api.pagination import PostLimitOffsetPagination, PostPageNumberPagination from .serializers import SmartListSerializer, SmartPushListSerializer from ..models import SmartModule, SmartPush @@ -14,6 +15,7 @@ from ..models import SmartModule, SmartPush class SmartListAPIView(ListAPIView): serializer_class = SmartListSerializer filter_backends = [SearchFilter, OrderingFilter] + pagination_class = PostLimitOffsetPagination search_fields = ['name', 'device_id', 'chip_id', 'region'] def get_queryset(self, *args, **kwargs): @@ -33,6 +35,7 @@ class SmartListAPIView(ListAPIView): class SmartPushListAPIView(ListAPIView): serializer_class = SmartPushListSerializer filter_backends = [SearchFilter, OrderingFilter] + pagination_class = PostLimitOffsetPagination search_fields = ['smart__name'] def get_queryset(self, *args, **kwargs):