0
我試圖用DRF爲交易記錄列表(按創建日期排序)設置CursorPagination。 我無法弄清楚如何做一個初始請求,因爲在那個階段我還不知道遊標。令人驚訝的是,我找不到這樣的例子。DRF光標分頁示例
此外,有沒有一種方法來設置每個與CursorPagination請求的頁面大小,PageNumberPagination有page_size_query_param和MAX_PAGE_SIZE,他們是不是有CursorPagination。
這是我到目前爲止有:
class RecordPagination(pagination.CursorPagination):
page_size = 10
class RecordsOverview(generics.ListAPIView):
serializer_class = RecordSerializer
logging_methods = ['GET']
queryset = Record.objects.all()
pagination_class = RecordPagination
# Note: this is my way to dynamically set the page size,
# it is totally hacky, so I'm open to suggestions
# is_number method is left out for brevity
def get(self, request, *args, **kwargs):
page_size = request.GET.get('page_size', '')
if self.is_number(page_size) and int(page_size) > 0:
self.paginator.page_size = int(page_size)
return self.list(request, *args, **kwargs)
然後在我的測試,我做一個GET請求:
response = self.client.get(GET_RECORDS_URL, data={'page_size': 2})
我回來了「下一個」鏈接看起來是這樣的:
http://testserver/api/v1/records/?cursor=cj0xJnA9MjAxNy0wOS0yMCsxNCUzQTM0JTNBNDkuNjUxMDU4JTJCMDAlM0EwMA%3D%3D&page_size=2
如果我做GET(next_url)我會得到下一個記錄OK ,這次我不必通過data = {'page_size':2}。
請讓我知道,如果我能以更清潔和更一致的方式做到這一切。