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

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

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

官方文檔[這里]

用于分頁的模塊: Pagination

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

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

2種配置途徑:

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

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

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

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

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

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

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

PAGE_SIZE: 分頁大小.

途徑2: 自定義分頁器

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

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

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

class StandarPagination(PageNumberPagination):
  page_size = 20 # 默認(rèn)每頁顯示條數(shù)配置
  page_query_param = 'page' # “頁數(shù)”的請求參數(shù)名稱, 默認(rèn)是page
  page_size_query_param = 'page_size' # “分頁大小”的請求參數(shù)名稱
 
  # 進入父類 PageNumberPagination 可看響應(yīng)體返回字段.
  #  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)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

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

    Python裝飾器原理與用法分析

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

    kali中python版本的切換方法

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

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

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

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

    這篇文章主要給大家介紹了關(guān)于Linux系統(tǒng)下升級pip的完整步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    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ù)即可,本文通過實例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    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的關(guān)系。本文為大家分享了幾個Python數(shù)據(jù)可視化繪圖的實例,感興趣的可以了解一下
    2022-05-05
  • Python知識之列表的十個小技巧分享

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

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

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

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

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

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

最新評論

防城港市| 登封市| 清水河县| 平阳县| 玉龙| 汉寿县| 定西市| 北宁市| 巴林右旗| 三明市| 嘉峪关市| 荥阳市| 平舆县| 白山市| 和政县| 徐闻县| 锡林郭勒盟| 恩施市| 成武县| 农安县| 湖南省| 河北区| 沁源县| 阆中市| 故城县| 呈贡县| 定南县| 防城港市| 通化县| 高唐县| 祁阳县| 剑河县| 黄浦区| 蒙阴县| 襄城县| 洛南县| 山西省| 高青县| 宜兴市| 祁阳县| 山西省|