rest_framework的分頁器元件配置與使用
阿新 • • 發佈:2018-11-11
分頁器的區域性使用:主要有兩個分頁器元件PageNumberPagination, LimitOffsetPagination
對指定的資料表類進行分頁
先自定義分頁器類,該類可以繼承兩個分頁器中的任何一個,然後重寫要自定義的配置屬性 ,例項程式碼如下:
1 from rest_framework.pagination import PageNumberPagination,LimitOffsetPagination
2 class MyPage(PageNumberPagination):
3 page_size = 2 #分頁顯示的記錄條數
4 page_query_param = " page" #分頁的檢索欄位
5 page_size_query_param ="size" #頁碼數字段
6 max_page_size = 3 #最大顯示記錄數
分頁器是選擇性使用的:
1 class MyLim(LimitOffsetPagination):
2 default_limit = 1
3 max_limit = 3
分頁器類建立完成後,可以加入檢視類裡
可以在檢視類的list查詢所有資料對應的方法下去寫(重寫list方法):
1 class BookShow(viewsets.ModelViewSet):
2
3 queryset = Book.objects.all()
4 serializer_class = BookModelSerializers
5 def list(self, request, *args, **kwargs):
6 # print(request.user)
7 # print(request.auth)
8 book_list=Book.objects.all()
9 mp=MyPage() #例項化一個分頁器物件
10 book_page=mp.paginate_queryset(book_list,request,self)
11
12
13 bs=BookModelSerializers(book_page,many=True,context={"request":request})
14 return Response(bs.data)
也可以直接用rest_farmwork內部配置好的方法去實現分頁,本質上它只是需要我們去指定要使用的分頁器類
1 class PublishDeteal(viewsets.ModelViewSet):
2 queryset = Publish.objects.all()
3 serializer_class = PublishShowSerializers
4 pagination_class=MyPage
它能獲取這個配置資訊,便能實現分頁。
*******************************************************************************
全域性分頁本質上和認證許可權頻率元件是一樣的,在settings裡面的REST_FARMWORK字典裡面配置
# "PAGE_SIZE":3