Django Ninja 分页:下一页存在吗?

问题描述 投票:0回答:1

开箱即用的分页 Django Ninja 的

PageNumberPagination
按以下方式序列化响应:

{
  "items": [
    {...},
    ...
  ],
  "count": 172
}

问题是如何判断下一页对象是否存在?当然,可以尝试通过

items
列表的长度从页面大小中检索它,但是如果 count 与页面大小等分,则这将不起作用,因此下一页将是空列表。

是否有方便的方法或解决方法可以在前端获取此信息?

为了简单起见,我们只考虑文档中的示例:

from ninja.pagination import paginate, PageNumberPagination

@api.get('/users', response=List[UserSchema])
@paginate(PageNumberPagination)
def list_users(request):
    return User.objects.all()
python django pagination django-ninja
1个回答
0
投票

我认为您不需要知道是否有下一页。最好从当前页和总页数中找出总页数和作品。

要正确计算页数,您需要使用四舍五入

math.ceil

import math
#get count item (172)
count_items = pagination["count"]

# 172/50 -> 3.44,  math.ceil(3.44) -> 4
count_page = math.ceil(count_items/ITEMS_PER_PAGE)

#Here's an example of checking if there is a next page:
current_page = request.GET.get("page", 1)
has_next_page = current_page < count_page 

您还应该将每页的项目数存储在

globals.py
中的单独变量中。这将使将来更容易调整页面项目计数。

© www.soinside.com 2019 - 2024. All rights reserved.