中級覆蓋每個類的分頁樣式和設定分頁

覆蓋分頁風格:

可以通過建立一個繼承自其中一個可用樣式的新類來覆蓋每個可用的分頁樣式,然後更改其引數:

class MyPagination(PageNumberPagination):
    page_size = 20
    page_size_query_param = 'page_size' 
    max_page_size = 200
    last_page_strings = ('the_end',)

這些引數(在分頁官方文件中列出 )是:

PageNumberPagination

  • page_size:表示頁面大小的數值。如果設定,則會覆蓋 PAGE_SIZE 設定。預設值與 PAGE_SIZE 設定鍵的值相同。
  • page_query_param:一個字串值,指示用於分頁控制元件的查詢引數的名稱。
  • page_size_query_param:如果設定,這是一個字串值,指示允許客戶端基於每個請求設定頁面大小的查詢引數的名稱。預設為 None,表示客戶端可能無法控制請求的頁面大小。
  • max_page_size:如果設定,這是一個數值,表示允許的最大請求頁面大小。此屬性僅在設定了 page_size_query_param 時有效。
  • last_page_strings:字串值的列表或元組,表示可以與 page_query_param 一起使用以請求集合中最後一頁的值。預設為 ('last',)
  • template:在可瀏覽 API 中呈現分頁控制元件時要使用的模板的名稱。可以重寫以修改呈現樣式,或設定為 None 以完全禁用 HTML 分頁控制元件。預設為 rest_framework/pagination/numbers.html

LimitOffsetPagination

  • default_limit:一個數值,表示客戶端在查詢引數中未提供的限制。預設值與 PAGE_SIZE 設定鍵的值相同。
  • limit_query_param:表示 limit 查詢引數名稱的字串值。預設為'limit'
  • offset_query_param:一個字串值,表示 offset 查詢引數的名稱。預設為'offset'
  • max_limit:如果設定,這是一個數值,表示客戶端可能請求的最大允許限制。預設為 None
  • template:與 PageNumberPagination 相同。

CursorPagination

  • page_size:與 PageNumberPagination 相同。
  • cursor_query_param:一個字串值,表示 cursor 查詢引數的名稱。預設為'cursor'
  • ordering:這應該是一個字串或字串列表,表示將應用基於游標的分頁的欄位。例如:ordering = 'slug'。預設為 -created。在檢視上使用 OrderingFilter 也可以覆蓋此值。
  • template:與 PageNumberPagination 相同。

每班設定分頁:

除了能夠在全域性範圍內設定分頁樣式之外,還可以使用每個類的設定:

class MyViewSet(viewsets.GenericViewSet):
    pagination_class = LimitOffsetPagination

現在只有 MyViewSet 有一個 LimitOffsetPagination 分頁。

自定義分頁樣式可以以相同的方式使用:

class MyViewSet(viewsets.GenericViewSet):
    pagination_class = MyPagination