分頁器
如果使用rest_framework的分頁器,視圖類需要繼承rest_framework.generics.GenericAPIView或者它的子類。
使用分頁器需要在視圖類中配置pagination_class,然後調用self.paginate_queryset(queryset)就能得到分頁後的數據集合。
def paginate_queryset(self, queryset):
"""
Return a single page of results, or `None` if pagination is disabled.
"""
if self.paginator is None:
return None
return self.paginator.paginate_queryset(queryset, self.request, view=self)
rest_framework自帶的分頁器
PageNumberPagination
類似django自帶的分頁器
# 每頁顯示多少條
page_size = 3
http://127.0.0.1:8001/?aa=3 -> 訪問第三頁,默認爲page
# 查詢的key,問號後面的key
page_query_param = 'aa'
http://127.0.0.1:8001/?aa=3&size=5 ->訪問第三頁,每頁五個數據
# 指定當前頁顯示多少條
page_size_query_param='size'
# 每頁最多顯示多少條,如果超過,有多少顯示多少
max_page_size=4
LimitOffsetPagination
偏移分頁
#每頁顯示的條數
default_limit = api_settings.PAGE_SIZE
#標杆值
offset_query_param = 'offset'
#往後偏移多少
http://127.0.0.1:8001/?offset=3&limit=5 ->從第四條數據開始,取五條
limit_query_param = 'limit'
#每頁顯示最大的條數
max_limit = None
****要取的條數,如果超過了,還剩多少,就顯示多少
CursorPagination
加密分頁(速度最快)
#按nid排序
page.ordering = 'nid'
#查詢的key值
cursor_query_param = 'cursor'
#每頁顯示多少條
page_size = api_settings.PAGE_SIZE