中間複合使用示例
讓我們假設我們有一個複雜的 api,有許多通用檢視和一些通用檢視集。我們希望為每個檢視啟用 PageNumberPagination
,除了一個(通用檢視或檢視集,沒有區別)我們想要一個 LimitOffsetPagination
的自定義情況。
要實現這一目標,我們需要:
-
在
settings.py
上,我們將放置預設分頁,以便為每個通用檢視/檢視集啟用它,我們將PAGE_SIZE
設定為 50 個專案:REST_FRAMEWORK = { 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination', 'PAGE_SIZE': 50 }
-
現在在我們的
views.py
(或另一個.py
ex:paginations.py
)中,我們需要覆蓋LimitOffsetPagination
:from rest_framework.pagination import LimitOffsetPagination class MyOffsetPagination(LimitOffsetPagination): default_limit = 20 max_limit = 1000
定製的
LimitOffsetPagination
,包含 20 件商品,最多包含 1000 件商品。 -
在我們的
views.py
中,我們需要定義我們特殊檢視的pagination_class
:imports ... # =================================== # PageNumberPagination classes # =================================== class FirstView(generics.ListAPIView): ... class FirstViewSet(viewsets.GenericViewSet): ... ... # =================================== # Our custom Pagination class # =================================== class IAmSpecialView(generics.ListAPIView): pagination_class = MyOffsetPagination ...
現在應用程式中的每個通用檢視/檢視集都有 PageNumberPagination
,除了 IAmSpecial
類,這確實是*特殊的,*並且有自己定製的 LimitOffsetPagination
。