文档章节

Python---Django使用内置paginator类分页

P
 Py_cc
发布于 2015/04/29 11:39
字数 377
阅读 30
收藏 0

Django分页是比较方便的,我们可以使用内置的一个paginator类。

这里以查询图书为例,以下是主要代码:

---------------------------------------------------------------------------------------------------



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
views.py
 
#导入方法PageNotAnInteger, Paginator, InvalidPage, EmptyPage
 
from django.core.paginator import PageNotAnInteger, Paginator, InvalidPage, EmptyPage
 
def  list (request):
 
books = Book.objects. all () #之前需要从models中导入Book
 
after_range_num = 5        #当前页前显示5页
 
befor_range_num = 4       #当前页后显示4页
 
try :                     #如果请求的页码少于1或者类型错误,则跳转到第1页
 
page = int (request.GET.get( "page" , 1 ))
 
if page < 1 :
 
page = 1
 
except ValueError:
 
page = 1
 
paginator = Paginator(books, 2 )   # 设置books在每页显示的数量,这里为2
 
try :                     #跳转到请求页面,如果该页不存在或者超过则跳转到尾页
 
books_list = paginator.page(page)
 
except (EmptyPage,InvalidPage,PageNotAnInteger):
 
books_list = paginator.page(paginator.num_pages)
 
if page > = after_range_num:
 
page_range = paginator.page_range[page - after_range_num:page + befor_range_num]
 
else :
 
page_range = paginator.page_range[ 0 : int (page) + befor_range_num]
 
return render - to_response( 'book_list.html' ,{ 'books' :books_list, 'page_range' :page_range})
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
Templates 视图
 
book_list.html
 
{ % for book in books.object_list % }
 
{{ book. id }}  |   {{ book.name }} <br / >
 
{ % endfor % }
 
<div>
 
{ % if books.has_previous % }
 
<a href = "?page={{ books.previous_page_number }}" >&lt; 上一页< / a>
 
{ % endif % }
 
<span>
 
{ % for p in page_range % }
 
{ % ifequal p books.number % }
 
<span class = "current" >{{p}}< / span>
 
{ % else % }
 
<a href = "?page={{p}}" title = "第{{p}}页" >{{p}}< / a>
 
{ % endifequal % }
 
{ % endfor % }
 
< / span>
 
{ % if books.has_next % }
 
<a href = "?page={{ books.next_page_number }}" >下一页 &gt; < / a>
 
{ % endif % }
 
<a >[第{{ books.number }} / {{ books.paginator.num_pages }}页]< / a>
 
< / div>


© 著作权归作者所有

下一篇: edx---添加主题
P
粉丝 0
博文 15
码字总数 4633
作品 0
济南
私信 提问
django paginator基本使用方法

分页是Web应用常用的手法,Django提供了一个分页器类Paginator(django.core.paginator.Paginator),可以很容易的实现分页的功能。该类有两个构造参数,一个是数据的集合,另一个是每页放多少...

jacked
2015/11/13
672
0
Django+boostrap分页(1)

源起 我想要优雅地使用+ 来实现分页,忽然发现不知道该如何做起我照葫芦画瓢知道了怎么使用列表组件,也大概知道怎么使用,但是放到一起我就彻底懵逼了。 资料收集 基本分页演示 如果想使用禁...

mhye
2016/10/09
217
0
Django 之 基于类的视图源码分析

基于类的视图(Class-based view)是Django 1.3引入的新的视图编写方式,用于取代以前基于函数(Function-based)方式。 借助于OO和Python中方便的多重继承特性,基于类的视图可以提供更好的抽象...

首席安全砖家
2013/06/11
763
0
【精华】【学以致用】Django精华总结

简单入门和梳理 1、WEB框架 MVC Model View Controller 数据库 模板文件 业务处理 MTV Model Template View 数据库 模板文件 业务处理 ############## WEB:MVC、MTV 2、Django #安装 pip3 i...

Asktao
2017/10/31
131
0
Django 基于类的视图源码分析 三

列表类通用视图(list.py) 此文件包含用于显示数据列表常用的类和工具类。不仅可以方便的用于显示基于模型(Model)的数据列表,也可以用于显示自定义数据列表。 ![list.py类图][1] 此图中绿色部...

XuYuan
2013/02/22
512
0

没有更多内容

加载失败,请刷新页面

加载更多

哪些情况下适合使用云服务器?

我们一直在说云服务器价格适中,具备弹性扩展机制,适合部署中小规模的网站或应用。那么云服务器到底适用于哪些情况呢?如果您需要经常原始计算能力,那么使用独立服务器就能满足需求,因为他...

云漫网络Ruan
今天
10
0
Java 中的 String 有没有长度限制

转载: https://juejin.im/post/5d53653f5188257315539f9a String是Java中很重要的一个数据类型,除了基本数据类型以外,String是被使用的最广泛的了,但是,关于String,其实还是有很多东西...

低至一折起
今天
23
0
OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
11
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
9
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部