如何分页
以前,经常将分页与DB混在一起,比如以下的PHP代码:
1.
<?php
2.
$page
= get_current_page();
3.
$start
=
$page
*
$step
;
4.
$article_list
=
$db
->all(
'select * from `xxx` limit $start,$step;'
);
5.
$total
=
$db
->get(
'select count(*) as `total` form `xxx`;'
);
6.
//...pagination...
分页应该注意的事项
- 分页类不应与混淆在一起
- 分页类不应与界面混淆在一起
- 分页类应该独立,在任何情况下都可以使用
分页类
分页类代码
01.
class
ProbbsPage:
02.
def
__init__(
self
, total, per
=
10
):
03.
self
.total
=
total
04.
self
.per
=
per
05.
self
.url
=
''
06.
self
.page
=
1
07.
08.
def
set_url(
self
,url):
09.
self
.url
=
url
10.
return
self
11.
12.
def
set_page(
self
,page):
13.
self
.page
=
int(page)
14.
return
self
15.
16.
def
show(
self
):
17.
if
self
.total
%
self
.per
=
=
0
:
18.
pages
=
self
.total
/
self
.per
19.
else
:
20.
pages
=
self
.total
/
self
.per
+
1
21.
if
self
.page <
6
:
22.
limit_s
=
1
23.
else
:
24.
limit_s
=
self
.page
25.
26.
if
pages < (limit_s
+
10
):
27.
limit_e
=
pages
28.
else
:
29.
limit_e
=
limit_s
+
10
30.
31.
pagination
=
'<span>%s/%s pages </span>'
%
(
self
.page,pages)
32.
for
i
in
range(limit_s,limit_e
+
1
):
33.
if
i
=
=
self
.page:
34.
pagination
+
=
'<a class="cur" href="javascript:void(0);">%s</a>'
%
(i,)
35.
else
:
36.
pagination
+
=
'<a href="%s">%s</a>'
%
(
self
.url
%
i,i)
37.
38.
return
pagination
分页类调用示例
1.
pagination
=
ProbbsPage(总页数,每页数)
2.
url
=
'your_page?page=%s'
;
3.
page_html
=
pagination.set_url(url).set_page(page).show()
4.
print
page_html
5.
#就可以显示出
6.
#<span>当前页/共几页</span>
7.
#<a>页页链接</a>
分类页可以优化的地方
set_url可以自动根据url进行提取,前提是使用“?页面参数=第几页”等常用的形成(像我使用专门的不期然形式就不可以了)set_page同上,可以自动从url中上提取
如果做到以上的两步,就可以直接 ProbbsPage(总页数,每页数).show()就可以了,相对来说比较方便