1. 程式人生 > >rest_framework的分頁器元件配置與使用

rest_framework的分頁器元件配置與使用

分頁器的區域性使用:主要有兩個分頁器元件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