在使用flask進(jìn)行開(kāi)發(fā)的過(guò)程是不免要涉及到分頁(yè)功能的開(kāi)發(fā),我使用的是flask_sqlalchemy
,對(duì)于繼承自flask_sqlalchemy.Model
的類,都有一個(gè)paginate(page=None, per_page=None, error_out=True, max_per_page=None)
方法來(lái)獲得一個(gè)flask_sqlalchemy.Pagination
對(duì)象。
下面我們來(lái)簡(jiǎn)單說(shuō)明一下paginate
和Pagination
的使用。
paginate
paginate(page=None, per_page=None, error_out=True, max_per_page=None)
這邊說(shuō)明一下這個(gè)方法對(duì)應(yīng)的參數(shù):
- page
- 指定頁(yè)碼,從
1
開(kāi)始
- 指定頁(yè)碼,從
- per_page
- 每一頁(yè)有幾個(gè)項(xiàng)
- error_out(默認(rèn)為True)
- 是否拋出錯(cuò)誤
- 當(dāng)其為
True
時(shí),在以下情況會(huì)拋出404
- 沒(méi)有匹配項(xiàng)或者
page
不等于1
-
page
比1
小或者per_page
是負(fù)數(shù) -
page
和per_page
不是整數(shù)
- 沒(méi)有匹配項(xiàng)或者
- 當(dāng)其為
False
時(shí)-
page
和per_page
的默認(rèn)值分別為20
和1
-
- max_per_page
- 當(dāng)指定了
max_per_page
時(shí),per_page
會(huì)受到這個(gè)值的限制(不知道是什么場(chǎng)景下使用,求指點(diǎn))
- 當(dāng)指定了
Pagination
Pagination
是調(diào)用paginate
方法后返回的對(duì)象。它擁有以下方法,我們可以通過(guò)它快速地實(shí)現(xiàn)分頁(yè)的功能。
它擁有以下屬性和方法。
- has_next
- 是否還有下一頁(yè)
- has_prev
- 是否還有下一頁(yè)
- items
- 當(dāng)前頁(yè)的元素集合
- next(error_out=False)
- 返回下一頁(yè)的
Pagination
對(duì)象
- 返回下一頁(yè)的
- next_num
- 下一頁(yè)的頁(yè)碼
- page
- 當(dāng)前頁(yè)的頁(yè)碼
- pages
- 匹配的元素在當(dāng)前配置一共有多少頁(yè)
- per_page
- 每一頁(yè)顯示的元素個(gè)數(shù)
- prev(error_out=False)
- 上一頁(yè)的
Pagination
對(duì)象
- 上一頁(yè)的
- prev_num
- 上一頁(yè)的頁(yè)碼
- query
- 創(chuàng)建
Pagination
對(duì)象對(duì)應(yīng)的query
對(duì)象
- 創(chuàng)建
- total
- 匹配的元素總數(shù)
看完相信你大概能知道分頁(yè)如何實(shí)現(xiàn)了吧。
歡迎留言指點(diǎn)交流