程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> webpy實現分頁功能的方法

webpy實現分頁功能的方法

編輯:關於PHP編程

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved