REST framework:分頁

未来可期_Durant發表於2024-08-24

REST framework提供了分頁的支援

一、全域性配置(不建議使用)

在配置檔案中設定全域性的分頁方式:

REST_FRAMEWORK = {
    'DEFAULT_PAGINATION_CLASS':  'rest_framework.pagination.PageNumberPagination',
    'PAGE_SIZE': 10  # 每頁資料量
}

二、區域性配置

在不同的檢視中可以透過pagination_clas屬性來指定不同的分頁器

1、自定義分頁器

定義一個繼承PageNumberPagination的型別,在子類中透過屬性定義分頁器的資料:

  • page_size 每頁預設的資料條數
  • page_query_param 前端傳送的頁數關鍵字名,預設為"page"
  • page_size_query_param 前端傳送的每頁數目關鍵字名,預設為None
  • max_page_size 每頁最多的資料條數
from rest_framework.pagination import PageNumberPagination


class UserInfoPagination(PageNumberPagination):
    # 預設每頁資料量
    page_size = 10
    page_query_param = 'page'

    page_size_query_param = 'size'

    # 每頁的資料量的最大值
    max_page_size = 100

2、使用分頁器

class UserView(ModelViewSet):
    # 指定模型類查詢集
    queryset = UserInfo.objects.all()
    # 指定序列化器類
    serializer_class = UserInfoSerializer

    # 指定分頁器類
    pagination_class = UserInfoPagination

介面文件

postman檢視

3、關閉分頁功能

如果在檢視內關閉分頁功能,只需在檢視內設定

pagination_class = None

三、分頁器型別

1) PageNumberPagination
  • 前端訪問網址形式:
    http://127.0.0.1:8000/students/?page=4

  • 子類中定義的屬性:
    page_size 每頁數目
    
    page_query_param 前端傳送的頁數關鍵字名,預設為"page"
    
    page_size_query_param 前端傳送的每頁數目關鍵字名,預設為None
    
    max_page_size 前端最多能設定的每頁數量
2)LimitOffsetPagination
  • 前端訪問網址形式:
    http://127.0.0.1:8000/students/?limit=100&offset=400
    可以在子類中定義的屬性:
    default_limit 預設限制,預設值與PAGE_SIZE設定一直
    
    limit_query_param limit引數名,預設'limit'
    
    offset_query_param offset引數名,預設'offset'
    
    max_limit 最大limit限制,預設None

相關文章