摘要:當(dāng)然以上促使以上三個(gè)任意條件中任意一個(gè)永遠(yuǎn)成立都可以進(jìn)行完整遍歷,當(dāng)然還有其他遍歷的方式,大家可以腦洞想想。
昨天看一了下問答區(qū)的問題,很多人都咨詢了flask在分頁的時(shí)候總是會(huì)遍歷出None,這是怎么回事呢?先來一段小程序:
數(shù)據(jù)庫(kù)信息:
代碼程序:
if __name__ == "__main__": user=User.query.paginate(1,2) for i in user.iter_pages(): print(i,end=" ") 輸出信息:1 2 3 4 5 None 8 9
今天我自己看了一下源碼,來分析一下
def iter_pages(self, left_edge=2, left_current=2, right_current=5, right_edge=2): last = 0 for num in xrange(1, self.pages + 1): if num <= left_edge or (num > self.page - left_current - 1 and num < self.page + right_current) or num > self.pages - right_edge: if last + 1 != num: yield None yield num last = num
可以很明了的看到當(dāng)last+1 != num的時(shí)候就會(huì)返回None,那么接下來的問題就是如果可以使
last+1 != num,那就是當(dāng)
num <= left_edge or
(num > self.page - left_current - 1 and num < self.page + right_current) or
num > self.pages - right_edge不成立的時(shí)候,
下次循環(huán)就會(huì)使last+1 != num。
那么,我們?nèi)绾谓Y(jié)果很多人想要完整遍歷的目的呢?那就是在默認(rèn)參數(shù)總改變值,使上述的三個(gè)條件中任意一個(gè)永遠(yuǎn)成立,如使num <= left_edge永遠(yuǎn)成立
for i in user.iter_pages(left_edge=user.pages): print(i,end=" ") 輸出結(jié)果:1 2 3 4 5 6 7 8 9
這樣就完美解決了。當(dāng)然以上促使以上三個(gè)任意條件中任意一個(gè)永遠(yuǎn)成立都可以進(jìn)行完整遍歷,當(dāng)然還有其他遍歷的方式,大家可以腦洞想想。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/42929.html
摘要:創(chuàng)建時(shí)間登錄用戶登錄地點(diǎn)外鍵確保你有一個(gè)關(guān)于數(shù)據(jù)庫(kù)遷移的文件,基礎(chǔ)代碼如下在終端執(zhí)行命令添加日志信息第二步,給路由和對(duì)應(yīng)視圖函數(shù)加上采集的日志信息以添加清單任務(wù)為例修改狀態(tài)和刪除任務(wù)也加上日志信息,這里省略西安添加任務(wù) 添加分頁功能 第一步:是對(duì)視圖函數(shù)的改寫,通過查詢數(shù)據(jù)庫(kù)數(shù)據(jù),進(jìn)行分頁顯示 # 修改清單顯示的視圖函數(shù) @app.route(/list/) @app.route(/l...
閱讀 3610·2023-04-26 02:24
閱讀 943·2023-04-25 14:47
閱讀 2515·2021-11-24 11:16
閱讀 1733·2021-11-24 09:38
閱讀 1583·2021-11-18 10:07
閱讀 2073·2021-09-22 15:49
閱讀 1602·2019-08-30 15:55
閱讀 892·2019-08-26 13:38