最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django REST framework 分頁的實現(xiàn)代碼

 更新時間:2019年06月19日 14:27:36   作者:逆行  
這篇文章主要介紹了Django REST framework 分頁的實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

官方文檔[這里]

用于分頁的模塊: Pagination

Django REST framework 有內(nèi)置 Pagination 模塊,無需額外安裝, 只需做簡單的配置.

配置什么呢? 就是告訴Django要用到什么樣的分頁樣式, 比如: 返回哪些字段, 每頁的大小, 請求參數(shù)的名稱等等.

2種配置途徑:

1.settings.py 文件里做全局的配置
2.單獨為每個需要分頁的 view 分配自定義分頁器.

途徑1是為所有繼承ListViewAPI的接口做默認配置, 途徑2對單獨一個接口做個性化配置.

需要注意的是: 途徑1做了全局的配置, 所有繼承 ListAPIView 的接口,默認都會有分頁. 這會影響到現(xiàn)有接口返回數(shù)據(jù)的結(jié)構(gòu). 除了這一點, 途徑1還是相當不錯的.

我比較喜歡僅使用途徑2, 我可以自定義了一個通用型的分頁器, 只為有需要分頁的view分配分頁器, 也是挺方便的.

途徑1: settings.py文件里做全局配置

REST_FRAMEWORK = {
 # ...
  'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
  'PAGE_SIZE': 100
}

DEFAULT_PAGINATION_CLASS: 默認分頁器(BasePagination的子類). Django提供了3個類型: PageNumberPagination、LimitOffsetPagination、CursorPagination. 不同類型返回的分頁信息不同. 也可以是你自定義的分頁器.

PAGE_SIZE: 分頁大小.

途徑2: 自定義分頁器

這里將示例使用自定義分頁器的流程.

新建一個 paginations.py 用于寫分頁器:

我們在 paginations.py 文件里寫一個通用的分頁器:

class StandarPagination(PageNumberPagination):
  page_size = 20 # 默認每頁顯示條數(shù)配置
  page_query_param = 'page' # “頁數(shù)”的請求參數(shù)名稱, 默認是page
  page_size_query_param = 'page_size' # “分頁大小”的請求參數(shù)名稱
 
  # 進入父類 PageNumberPagination 可看響應體返回字段.
  #  def get_paginated_response(self, data):
  #  return Response(OrderedDict([
  #    ('count', self.page.paginator.count),
  #    ('next', self.get_next_link()),
  #    ('previous', self.get_previous_link()),
  #    ('results', data)
  #  ]))

  
  # 覺得不適用, 那就拷貝出來,重載函數(shù), 自己多加幾個字段. 
  # (可通過官方文檔或直接調(diào)試得知從哪些屬性獲取正確的值.)
  def get_paginated_response(self, data):
    return Response(OrderedDict([
      ('count', self.page.paginator.count),
      ('next', self.get_next_link()),
      ('previous', self.get_previous_link()),
      ('page', self.page.number),
      ('total_page', self.page.paginator.num_pages),
      ('page_size', self.page.paginator.per_page),
      ('results', data)
    ]))

(更多的屬性介紹請查看文檔)

為接口分配分頁器, 為屬性 pagination_class 賦值即可.

from rest_framework.pagination import PageNumberPagination

class MyListAPI(ListAPIView):
  queryset = TestModel.objects.filter()
  serializer_class = TestModelSerializer
  pagination_class = StandarPagination # 新增

完成!

假如該接口請求地址是 http://api/test/

看客戶端是如何請求接口的:

http://api/test/ : 返回第一頁, 分頁大小是20.

http://api/test/?page=2&page_size=10: 返回第二頁,分頁大小是10.

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Python裝飾器原理與用法分析

    Python裝飾器原理與用法分析

    這篇文章主要介紹了Python裝飾器原理與用法,結(jié)合實例形式分析了Python裝飾器的概念、原理、使用方法及相關操作注意事項,需要的朋友可以參考下
    2018-04-04
  • kali中python版本的切換方法

    kali中python版本的切換方法

    今天小編就為大家分享一篇kali中python版本的切換方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Python 一篇文章看懂時間日期對象

    Python 一篇文章看懂時間日期對象

    學習每一門語言多多少少會用到與時間相關的東西,咱們今天呢就談一談Python中的時間與日期對象。在Python中時間對象一般可以用來測量效率。日期對象用來處理日期與字符串之間的關系
    2022-03-03
  • Linux系統(tǒng)下升級pip的完整步驟

    Linux系統(tǒng)下升級pip的完整步驟

    這篇文章主要給大家介紹了關于Linux系統(tǒng)下升級pip的完整步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • python?request要求接口參數(shù)必須是json數(shù)據(jù)的處理方式

    python?request要求接口參數(shù)必須是json數(shù)據(jù)的處理方式

    這篇文章主要介紹了python?request要求接口參數(shù)必須是json數(shù)據(jù)的處理方式,Reqeusts支持以form表單形式發(fā)送post請求,只需要將請求的參數(shù)構(gòu)造成一個字典,然后傳給requests.post()的data參數(shù)即可,本文通過實例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2022-08-08
  • python實現(xiàn)PCA降維的示例詳解

    python實現(xiàn)PCA降維的示例詳解

    今天小編就為大家分享一篇python實現(xiàn)PCA降維的示例詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python數(shù)據(jù)可視化繪圖實例詳解

    Python數(shù)據(jù)可視化繪圖實例詳解

    數(shù)據(jù)可視化是指用圖形或表格的方式來呈現(xiàn)數(shù)據(jù)。圖表能夠清楚地呈現(xiàn)數(shù)據(jù)性質(zhì), 以及數(shù)據(jù)間或?qū)傩蚤g的關系。本文為大家分享了幾個Python數(shù)據(jù)可視化繪圖的實例,感興趣的可以了解一下
    2022-05-05
  • Python知識之列表的十個小技巧分享

    Python知識之列表的十個小技巧分享

    這篇文章主要介紹了Python知識之列表的十個小技巧分享,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Python中用于返回絕對值的abs()方法

    Python中用于返回絕對值的abs()方法

    這篇文章主要介紹了Python中用于返回絕對值的abs()方法,是Python入門中的基礎知識,需要的朋友可以參考下
    2015-05-05
  • Python實例方法、類方法、靜態(tài)方法區(qū)別詳解

    Python實例方法、類方法、靜態(tài)方法區(qū)別詳解

    這篇文章主要介紹了Python實例方法、類方法、靜態(tài)方法區(qū)別詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09

最新評論

衡阳县| 平原县| 高阳县| 府谷县| 墨竹工卡县| 屯留县| 梁山县| 镇赉县| 铜梁县| 鄂伦春自治旗| 鄂托克旗| 乌兰县| 赤壁市| 彝良县| 潜江市| 仁化县| 西和县| 龙江县| 阿拉善左旗| 澄城县| 沁水县| 绥中县| 常熟市| 邢台县| 永胜县| 桂阳县| 建湖县| 东乡族自治县| 拉萨市| 镇安县| 碌曲县| 沁阳市| 同心县| 修水县| 永寿县| 菏泽市| 启东市| 山东省| 霍城县| 蓬莱市| 阳谷县|