廖雪峰Python web例項 分頁補充

2021-08-19 19:13:22 字數 3002 閱讀 7861

廖的教程寫的非常詳細了,分頁功能不完整。

後端**:

apis.py

classpage(object):

'''page object for display pages.

'''def__init__(self, item_count, page_index=1, page_size=10):

'''init pagination by item_count, page_index and page_size.

>>> p1 = page(100, 1)

>>> p1.page_count

10>>> p1.offset

0>>> p1.limit

10>>> p2 = page(90, 9, 10)

>>> p2.page_count

9>>> p2.offset

80>>> p2.limit

10>>> p3 = page(91, 10, 10)

>>> p3.page_count

10>>> p3.offset

90>>> p3.limit

10'''

self.item_count = item_count # 資料總條數

self.page_size = page_size # 每頁顯示條數

self.page_count = item_count // page_size + (1

ifitem_count % page_size > 0

else0) # item_count除以10+取餘;總頁數

if(item_count == 0)or(page_index > self.page_count): # 當表資料為0或者page_count<1;條數為0或頁數為1

self.offset = 0

self.limit = 0

self.page_index = 1

else:

self.page_index = page_index # 當前頁數

self.offset = self.page_size * (page_index - 1) # 0,10,20,30...

self.limit = self.page_size # 1,2,3,4...

self.has_previous = self.page_index > 1

self.page_default = 11

# 預設顯示分頁11頁

# 如果總頁數<=11

ifself.page_count <= self.page_default:

self.page_start = 1

self.page_end = self.page_count + 1

# self.page_range = range(1, self.page_count + 1) # 遍歷所有頁數

# 如果總頁數》11

else:

# 如果當前頁<=5

ifself.page_index <= int((self.page_default - 1) / 2):

self.page_start=1

self.page_end=self.page_default + 1

# self.page_range = range(1, self.page_default + 1)

else:

# 如果當前頁+5>總頁數

if(self.page_index + 5) > self.page_count:

self.page_start = self.page_count - self.page_default + 1

self.page_end = self.page_count + 1

# self.page_range = range(self.page_count - self.page_default + 1, self.page_count + 1)

else:

self.page_start = self.page_index - int((self.page_default - 1) / 2)

self.page_end = self.page_index + int((self.page_default - 1) / 2) + 1

# self.page_range = range(self.page_index - int((self.page_default - 1) / 2),

# self.page_index + int((self.page_default - 1) / 2) + 1)

def__str__(self):

return'item_count: %s, page_count: %s, page_index: %s, page_size: %s, offset: %s, limit: %s'% (

self.item_count, self.page_count, self.page_index, self.page_size, self.offset, self.limit)

__repr__ = __str__

前端**:
__base__.html

apis.py中如果用page_range會報錯 

直接在jinjia2前端中使用range即可;

參考鏈結

我的部落格:

廖雪峰 Git筆記

git簡介 分布式版本控制系統 集中式vs分布式 集中式版本控制系統,版本庫集中存放在 伺服器,必須要聯網才能工作,沒有歷史版本庫。分布式版本控制系統,不需要 伺服器 每個開發人員電腦上都有乙個完整的版本庫。分布式優勢 安全性更高,無需聯網,若 伺服器 故障,任何乙個其他開發者本地都有最新的帶歷史記...

廖雪峰python自學1

這一章主要講了位置引數,預設引數等。在python中定義函式,可以用必選引數 預設引數 可變引數 關鍵字引數和命名關鍵字引數,這5種引數都可以組合使用。但是請注意,引數定義的順序必須是 必選引數 預設引數 可變引數 命名關鍵字引數和關鍵字引數。以下函式允許計算兩個數的乘積,請稍加改造,變成可接收乙個...

Git 廖雪峰 學習筆記

目錄 git工作區域 git初始化及倉庫建立和操作 初始化新的git倉庫 1.新建資料夾 2.在檔案內初始化git 如何將本地倉庫同步到git 遠端倉庫 1.關聯遠端庫 2.第一次推送master分支的所有內容 3.每次本地提交後,推送最新修改 轉殖 分支管理 1.建立與合併分支 2.解決衝突 3....