假设我有一个 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
