rest framework提供了分頁的支援。
我們可以在配置檔案中設定全域性的分頁方式,如:
rest_framework =
也可通過自定義pagination類,來為檢視新增不同分頁行為。在檢視中通過pagination_class
屬性來指明。
class
largeresultssetpagination
(pagenumberpagination)
: page_size =
1000
#每頁顯示多少條
#127.0.0.1:8001/students/?page=5&page_size=10
page_size_query_param =
'page_size'
max_page_size =
10000
class
bookdetailview
(retrieveapiview)
: queryset = bookinfo.objects.
all(
) serializer_class = bookinfoserializer
pagination_class = largeresultssetpagination
注意:如果在檢視內關閉分頁功能,只需在檢視內設定
pagination_class =
none
1)pagenumberpagination
get
可以在子類中定義的屬性:
# 宣告分頁的配置類
from rest_framework.pagination import pagenumberpagination
class
standardpagenumberpagination
(pagenumberpagination)
:# 預設每一頁顯示的資料量
page_size =
2# 允許客戶端通過get引數來控制每一頁的資料量
page_size_query_param =
"size"
max_page_size =
10#客戶端通過size指定獲取資料的條數時,最大不能超過多少
# 自定義頁碼的引數名
page_query_param =
"p"class
studentapiview
(listapiview)
: queryset = student.objects.
all(
) serializer_class = studentmodelserializer
pagination_class = standardpagenumberpagination
# 127.0.0.1/four/students/?p=1&size=5
2)limitoffsetpagination
get #從下標為400的記錄開始,取100條記錄
可以在子類中定義的屬性:
from rest_framework.pagination import limitoffsetpagination
class
standardlimitoffsetpagination
(limitoffsetpagination)
:# 預設每一頁查詢的資料量,類似上面的page_size
default_limit =
2 limit_query_param =
"size"
#預設是limit
offset_query_param =
"start"
#預設是offset
class
studentapiview
(listapiview)
: queryset = student.objects.
all(
) serializer_class = studentmodelserializer
# 呼叫頁碼分頁類
# pagination_class = standardpagenumberpagination
# 呼叫查詢偏移分頁類
pagination_class = standardlimitoffsetpagination
drf 分頁元件
目錄可以達到檢視第幾頁以及每一頁顯示幾條的效果 from rest framework.pagination import pagenumberpagination 一 基本使用 url url 無效 class pager apiview def get self,request,args,kwa...
Django元件之 分頁器
django自帶分頁器 paginator 用起來非常方便。怕自己寫的出bug,可以使用現成的 批量匯入資料 booklist for i in range 100 book.objects.bulk create booklist 分頁器的使用 book list book.objects.all...
django之分頁器元件
1,配置路由,在模板層建立表模型 2,在檢視層圍標新增資料 def index request 先造成100本書,放到列表中 ll for i in range 100 批量插入,兩個引數,第乙個是物件列表,第二個是一次插入的資料量,不填,預設一次全插入 models.book.objects.bu...