国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

Django rest framework分頁接口實現(xiàn)原理解析

瀏覽:157日期:2024-09-23 13:21:05

如果沒有設置分頁,django-rest-framework 會將所有資源類表序列化后返回,如果資源很多,就會對網(wǎng)站性能造成影響。為此,我們來給博客文章列表 API 添加分頁功能。

django-rest-framework 為分頁功能提供了多個輔助類,常用的有:

PageNumberPagination

將資源分為第 1 頁、第 2 頁...第 n 頁,使用頁碼號請求分頁結果。

LimitOffsetPagination

通過 limit 和 offset 兩個參數(shù)來控制請求的資源。例如通過發(fā)送 API 請求:/posts/?offset=20&limit=5,將獲取文章資源列表第 20 篇后的 5 篇文章。如果 offset 以等差數(shù)列遞增,limit 保持不變,則等價于按頁碼分頁。但 offset 和 limit 可以為任意值,因此這種分頁比 PageNumberPagination 更加靈活。

要使用分頁功能非常簡單,只需在項目的配置文件中配置好分頁選項,即可全局啟用分頁功能。打開 config/common.py 配置文件,寫入如下的分頁配置:

REST_FRAMEWORK = { # 設置 DEFAULT_PAGINATION_CLASS 后,將全局啟用分頁,所有 List 接口的返回結果都會被分頁。 # 如果想單獨控制每個接口的分頁情況,可不設置這個選項,而是在視圖函數(shù)中進行配置 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination', # 這個選項控制分頁后每頁的資源個數(shù) 'PAGE_SIZE': 10,}

配置完成之后,所有通用視圖函數(shù)或者視圖集生成的資源列表 API,返回的資源列表都會被分頁。配置文件中的分頁設置將作用于全局,如果某個視圖函數(shù)或者視圖集不想使用全局配置怎么辦呢?可以在視圖函數(shù)或者視圖集中設置 pagination_class 屬性,指定需要使用的分頁輔助類即可。例如將博客文章列表分頁替換為 limit offset 的分頁方式,可以這樣設置:

from rest_framewrok.pagination import PageNumberPaginationclass PostViewSet(viewsets.GenericViewSet): pagination_class = LimitOffsetPagination

這樣,PostViewSet 視圖集將返回 limit offset 分頁形式的文章列表,而其他視圖或者視圖集仍將使用全局的分頁配置。

請求文章 api,返回結果如下:

Django rest framework分頁接口實現(xiàn)原理解析

對返回結果的解釋:

count:總資源數(shù)目

next:下一頁資源的鏈接

previous:上一頁資源的鏈接

results:當前頁的資源列表

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標簽: Django
相關文章:
主站蜘蛛池模板: 免费久草视频 | 91成人免费观看在线观看 | 纯欧美一级毛片_免费 | 三级带黄色 | 精品久久网 | 国产毛片网站 | 欧美特黄一片aa大片免费看 | 国产亚洲精品一区久久 | 欧美三级中文字幕 | 欧美日韩精品一区二区三区高清视频 | 免费a级毛片无码 | 国产成人yy精品1024在线 | 亚洲欧美日韩国产 | 男人在线网址 | 国产精品大全国产精品 | 九色国产在线 | 亚洲精品一二三四区 | www亚洲精品 | 欧美精品一级 | 久草在| 国产欧美久久精品 | 香蕉视频一级片 | 日本一区毛片免费观看 | 欧美激情精品久久久久久久九九九 | 一区二区三区免费 | 色综合精品久久久久久久 | 国产微拍精品福利视频 | 爽爽爽爽爽爽a成人免费视频 | 人碰人操 | 韩国日本三级在线观看 | 午夜一级毛片免费视频 | 日韩黄色在线 | 91pao强力打造免费高清 | 精品综合久久久久久99 | 欧美综合图片一区二区三区 | 黄录像欧美片在线观看 | 欧美乱大交xxxxx在线观看 | 亚洲精品综合欧美一区二区三区 | 亚洲欧美小视频 | 日本尹人综合香蕉在线观看 | 日韩午夜在线观看 |