分頁,在做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