【发布时间】:2017-08-26 19:39:29
【问题描述】:
我正在使用APIView 获取和发布项目。
我想使用 Django Rest Framework 为我的 API 实现分页,但它不起作用。
我想每页显示 10 个项目,但是当我执行 api/v1/items?page=1 时,我会得到所有项目,如果我只是执行 api/v1/items,我会得到一个空列表。
这是我所做的:
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
class ItemsAPIView(APIView):
permission_classes = (permissions.IsAuthenticated,)
def get(self, request, format=None):
"""
Return a list of all items of this user.
"""
reply = {}
page = request.GET.get('page')
print ('page is', page)
try:
products = BaseItem.objects.owned_items().filter(owner=request.user)
reply['data'] = OwnedItemSerializer(products, many=True).data
items = BaseItem.objects.filter(owner=request.user)
paginator = Paginator(items, 1)
items_with_pagination = paginator.page(page)
if page is not None:
reply['data'].extend(ItemSerializer(items_with_pagination, many=True).data)
reply['data'].extend(ItemSerializer(items, many=True).data)
【问题讨论】:
-
嘿,@pythonBeginner 我想知道,你觉得任何答案有帮助吗?
标签: python django pagination django-rest-framework