Skip to main content
 首页 » 编程设计

python之如何检测用户是否在 Django REST(分页)的最后一页

2024年10月24日36zhwl

假设我有一个 View :

class FooPagination(PageNumberPagination): 
    page_size = 10 
 
class FooView(ListAPIView): 
    serializer_class = FooSerializer 
    pagination_class = FooPagination 
    def get_queryset(self): 
        if self.paginator.? 
            # do something special 

如何检测用户是否在 Django REST(分页)中的最后一页?

更新如果我尝试:

print(self.paginator.get_next_link()) 

我得到:

Exception Type: AttributeError 
Exception Value: 'FooPagination' object has no attribute 'page' 
Exception Location: C:\Users\Daniel\venvs\brook\lib\site-packages\rest_framework\pagination.py in get_next_link, line 297 

我想我正在尝试的是不可能通过这种方式实现的,因为在指定查询集之前,分页器不知道它是否在最后一页上。一种先有鸡还是先有蛋的情况。

请您参考如下方法:

要使 self.paginator.get_next_link() 起作用,您必须使用 self.paginate_queryset(self.queryset)。通常,这在 View 方法内部使用,例如 list() 而不是 get_queryset()(两者都有效!)。

然后,使用

 if not self.paginator.get_next_link(): 
     #  You're in last page 
     #  your code goes here