分頁,在做WEB開發的時候一定會遇到的,可是webpy卻沒有內置的分布類,只有自己動手寫一個簡單的分頁類。本文,就以webpy(實際只是python的功能)為便,實現一個簡單的分頁類...
以前,經常將分頁與DB混在一起,比如以下的PHP代碼:
<?php $page = get_current_page(); $start = $page*$step; $article_list = $db->all('select * from `xxx` limit $start,$step;'); $total = $db->get('select count(*) as `total` form `xxx`;'); //...pagination...
這樣的分頁明顯是不科學的。
為了滿足以上的三個條件,就設計了一個簡單的分頁類(只做示例,應用到項目需要優化代碼和嚴格的檢查)
class ProbbsPage: def __init__(self, total, per = 10): self.total = total self.per = per self.url = '' self.page = 1 def set_url(self,url): self.url = url return self def set_page(self,page): self.page = int(page) return self def show(self): if self.total%self.per == 0: pages = self.total/self.per else: pages = self.total/self.per+1 if self.page < 6: limit_s = 1 else: limit_s = self.page if pages < (limit_s+10): limit_e = pages else: limit_e = limit_s+10 pagination = '<span>%s/%s pages </span>'%(self.page,pages) for i in range(limit_s,limit_e+1): if i == self.page: pagination += '<a class="cur" href="javascript:void(0);">%s</a>'%(i,) else: pagination += '<a href="%s">%s</a>'%(self.url%i,i) return pagination
pagination =ProbbsPage(總頁數,每頁數) url = 'your_page?page=%s'; page_html = pagination.set_url(url).set_page(page).show() print page_html #就可以顯示出 #<span>當前頁/共幾頁</span> #<a>頁頁鏈接</a>
set_url可以自動根據url進行提取,前提是使用“?頁面參數=第幾頁”等常用的形成(像我使用專門的不期然形式就不可以了)
set_page同上,可以自動從url中上提取
如果做到以上的兩步,就可以直接 ProbbsPage(總頁數,每頁數).show()就可以了,相對來說比較方便
文章來源:http://pjiaxu.com/python/48.html