1. 程式人生 > >django 分頁效果實現(djangorestframework內建以及django內建方法)

django 分頁效果實現(djangorestframework內建以及django內建方法)

restframework的分頁需要再setting 中新增一個

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.BasicAuthentication',
    ),
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
    'PAGE_SIZE': 10
}
class UserInfoPage(generics.ListAPIView)
:
queryset = UserInfo.objects.all() serializer_class = UserInfoSerializer def get(self, request, *args, **kwargs): pageObject = UserInfo.objects.all() page = self.paginate_queryset(pageObject) _total = self._paginator.count if page is not None: serializer = self.get_serializer(page, many=True
) _list = serializer.data return_dict = { 'total': _total, 'limit': 10, 'list': _list } return Response(return_dict, status=status.HTTP_200_OK)

返回的效果圖

這裡寫圖片描述

下面是我自己寫的一個分頁方法 由於資料一多,返回json太費時間,就改成了上面的那種方式

from django.core.paginator import
Paginator, EmptyPage, PageNotAnInteger def page_info(info, pageSize=10, pageNo=1): # info格式 為 資料序列化後的json格式 p = Paginator(info, pageSize) try: contract = p.page(pageNo).object_list except PageNotAnInteger: contract = p.page(1).object_list except EmptyPage: contract = [] something = { 'pageNo': pageNo, 'pageSize': pageSize, 'list': contract, 'total': p.count, } return something