當前位置:
首頁 >
接口api全局挂载_第 6 篇:分页接口
發布時間:2025/3/20
21
豆豆
生活随笔
收集整理的這篇文章主要介紹了
接口api全局挂载_第 6 篇:分页接口
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
作者:HelloGitHub-追夢人物
如果沒有設置分頁,django-rest-framework 會將所有資源類表序列化后返回,如果資源很多,就會對網站性能造成影響。為此,我們來給博客文章列表 API 添加分頁功能。
django-rest-framework 為分頁功能提供了多個輔助類,常用的有:
- PageNumberPagination
將資源分為第 1 頁、第 2 頁...第 n 頁,使用頁碼號請求分頁結果。 - LimitOffsetPagination
通過 limit 和 offset 兩個參數來控制請求的資源。例如通過發送 API 請求:/posts/?offset=20&limit=5,將獲取文章資源列表第 20 篇后的 5 篇文章。如果 offset 以等差數列遞增,limit 保持不變,則等價于按頁碼分頁。但 offset 和 limit 可以為任意值,因此這種分頁比 PageNumberPagination 更加靈活。
要使用分頁功能非常簡單,只需在項目的配置文件中配置好分頁選項,即可全局啟用分頁功能。打開 config/common.py 配置文件,寫入如下的分頁配置:
REST_FRAMEWORK = {# 設置 DEFAULT_PAGINATION_CLASS 后,將全局啟用分頁,所有 List 接口的返回結果都會被分頁。# 如果想單獨控制每個接口的分頁情況,可不設置這個選項,而是在視圖函數中進行配置"DEFAULT_PAGINATION_CLASS": "rest_framework.pagination.PageNumberPagination",# 這個選項控制分頁后每頁的資源個數"PAGE_SIZE": 10, }配置完成之后,所有通用視圖函數或者視圖集生成的資源列表 API,返回的資源列表都會被分頁。配置文件中的分頁設置將作用于全局,如果某個視圖函數或者視圖集不想使用全局配置怎么辦呢?可以在視圖函數或者視圖集中設置 pagination_class 屬性,指定需要使用的分頁輔助類即可。例如將博客文章列表分頁替換為 limit offset 的分頁方式,可以這樣設置:
from rest_framewrok.pagination import PageNumberPaginationclass PostViewSet(viewsets.GenericViewSet):pagination_class = LimitOffsetPagination這樣,PostViewSet 視圖集將返回 limit offset 分頁形式的文章列表,而其他視圖或者視圖集仍將使用全局的分頁配置。
請求文章 api,返回結果如下:
對返回結果的解釋:
count:總資源數目
next:下一頁資源的鏈接
previous:上一頁資源的鏈接
results:當前頁的資源列表
總結
以上是生活随笔為你收集整理的接口api全局挂载_第 6 篇:分页接口的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 场外和场内的区别_3分钟看懂场内基金和场
- 下一篇: 函数失败返回_为什么句柄返回值不一致?