如何在Django分页中显示JSON响应中的总页面?

如何在Django分页中显示JSON响应中的总页面?,django,serialization,pagination,Django,Serialization,Pagination,我目前正在Django restful框架中进行分页。我成功地完成了分页。但我面临的问题是“JSON响应不包括有关查询中总页面的信息以及总记录等其他信息”。如何在回复中包含此信息。 我的看法是 from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger #######################View all mobiles @api_view(['GET']) def getAll_Mobiles(re

我目前正在Django restful框架中进行分页。我成功地完成了分页。但我面临的问题是“JSON响应不包括有关查询中总页面的信息以及总记录等其他信息”。如何在回复中包含此信息。 我的看法是

from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
#######################View all mobiles
@api_view(['GET'])
def getAll_Mobiles(request):
    try:
        Mobile_all = Mobile.objects.all()
        paginator = Paginator(Mobile_all, 10)

        page = request.GET.get('page')
        try:
            users = paginator.page(page)
        except PageNotAnInteger:
            users = paginator.page(1)
        except EmptyPage:
            # If page is out of range (e.g. 9999),
            # deliver last page of results.
            users = paginator.page(paginator.num_pages)
        serializer_context = {'request': request}
        serializer = Mobile_Serializer(users,many=True,context=serializer_context)
        return Response(serializer.data)
    except Mobile.DoesNotExist:
        return Response(status=status.HTTP_404_NOT_FOUND)
我的API返回URL中更改页面的记录。但它没有给我回复信息。
有谁能告诉我如何在回复中包含这些信息吗。我将非常感谢你的帮助

您应该能够使用序列化程序中的
self.page.paginator.num_pages
访问页数,这是分页器的一个属性

您可以通过DRF本身来了解这一点

在您的示例中,实现可能如下所示:

#users is a Page object returned from the django paginator class
#its not a list of users, it just act as a list of users when iterated
return Response({
    'count': paginator.count,
    'num_pages': paginator.num_pages,
    'results': serializer.data
})
一个简单的方法是:

# instead of returning serializer data instantly:
# return Response(serializer.data)
res = {'data': serializer.data, 'pages_count': paginator.num_pages()}
return Response(res)

另一种方法是在序列化程序中覆盖
到\u representation
方法…

它的给定错误,如“update不是'res'的属性”。但我已经完成了下面的回答。谢谢你suggestion@AmadudDin你说得对:)这是我的错误,我编辑了我的答案以供进一步使用。这对我帮助很大!
       if serializer.data["hasPagination"]:
            paginator = Paginator(result_serializer.data, settings.PAGE_SIZE)
            page = request.GET.get('page', 1)
            result = paginator.get_page(page)
            return Response(data={
                'results': result.object_list,
                'total_records': paginator.count,
                'total_pages': paginator.num_pages,
                'page': result.number,
                'has_next': result.has_next(),
                'has_prev': result.has_previous()
            }, status=status.HTTP_200_OK)