当我们从后台数据库读取数据,出现太多的时候会很难看,这个时候就要用到分页功能,django带有的分页模块非常好用,这几天在研究,今天跟大家分享一下直接启动代码:
[root@mail oms]# ./manage.py shell #启动后台
>>> from django.core.paginator import Paginator 导入模块
>>> objects = ['xiaoluo','test','huihui','xiaoxiao'] #开始定义一个列表
>>> p = Paginator(objects,2) #objects以2为分割单位
>>> p.count #统计总共多少行
4
>>> p.num_pages #统计总共的页数
2
>>> p.page_range #序号
[1, 2]
>>> page1 = p.page(1) #第一页序号
>>> page1
<Page 1 of 2>
>>> page1.object_list #详细信息
['xiaoluo', 'test']
>>> page1.has_next() #是否有下一页
True
>>> page1.has_previous() #是否有上一页
False
>>> page2= p.page(2) #打印第二页
>>> page2.object_list
['huihui', 'xiaoxiao']
>>> page2.previous_page_number() #上一页的页面号数
1
>>> page1.next_page_number() #下一页
2
>>> page1.start_index() #这一页开始的序号
1
>>> page1.end_index()
2
实例:下面是一段后台views的代码:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
def
server_asset_list(request):
server_asse
=
ServerAsset.objects.
all
()
paginator
=
Paginator(server_asse,
10
)
try
:
page
=
int
(request.GET.get(
'page'
,
'1'
))
except
ValueError:
page
=
1
try
:
server_asse
=
paginator.page(page)
except
(EmptyPage,InvalidPage):
server_asse
=
paginator.page(paginator.num_pages)
return
render_to_response(
'server_asset_list.html'
,{
'server_asse'
:server_asse})
页面html模板:
{
%
if
server_asse.has_previous
%
}
<a href
=
"?page={{ server_asse.previous_page_number }}"
>上一页<
/
a>
{
%
endif
%
}
<span
class
=
"current"
>
第{{ server_asse.number }}页,共{{ server_asse.paginator.num_pages }}页<
/
span>
{
%
if
server_asse.has_next
%
}
<a href
=
"?page={{ server_asse.next_page_number }}"
>下一页<
/
a>
{
%
endif
%
}
页面效果展示:
|
