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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章