知识简介:
paginator对象:
方法init(列表,int):返回分页对象,参数为列表数据,每页数据的条数
属性count():返回对象总数
属性num_pages:返回页面总数
属性page_range:返回页码列表,从1开始,例如[1,2,3,4]
方法page(m):返回page对象,表示第m页的数据,下标以1开始
page对象:
调用paginator对象的page方法,返回page对象,不需要手动构造
属性object_list:返回当前页对象的的列表
属性number:返回当前页是第几页,从1开始
属性paginator:当前页对应的paginator对象
方法has_next():如果有下一页返回True
方法has_previous():如果有上一页返回True
方法len():返回当前页面对象的个数
一个小例子
我们是在Django中实现的这个功能,至于怎么创建Django项目,已经怎么配置环境不在此次介绍范围内。
#分页处理
paginator=Paginator(goods_list,10)
page=paginator.page(current_page) #获取当前页要显示的商品对象
这里是视图函数里的代码段,goods_list是包含了所有商品对象的列表,设置为每页显示数据为10个,并且获取到当前页的数据。视图函数是怎么指向过来的,请结合自己的项目在应用urls中配置,然后在视图函数中使用return render()将page这个变量传递给Html页面。
<ul class="goods_type_list clearfix">
{% for goods in page %}
<li>
<a href="detail.html"><img src="/static/{{ goods.pic }}"></a>
<h4><a href="detail.html">{{ goods.name }}</a></h4>
<div class="operate">
<span class="prize">¥{{ goods.price }}</span>
<span class="unit">{{ goods.unit }}</span>
<a href="#" class="add_goods" title="加入购物车"></a>
</div>
</li>
{% endfor %}
</ul>
<div class="box">
<div id="pagination" class="page"></div>
</div>
<script>
$(function() {
$("#pagination").pagination({
currentPage: {{ page.number }},
totalPage: {{ page.paginator.num_pages }},
isShow: false,
count: 5,
prevPageText: "< 上一页",
nextPageText: "下一页 >",
callback: function(current) {
location.href='/product_list_{{ current_type.id }}_'+current+'/?order_by={{ order_by }}'
}
});
});
</script>
这是html中的代码段,我们遍历传递过来的page,它包含了当前页要显示的所有商品的对象,我们将每个对象遍历过来,再结合数据库的字段将商品的基本信息显示出来。
callback: function(current) {
location.href=’/product_list_{{ current_type.id }}_’+current+’/?order_by={{ order_by }}’
}
这句代码的意思是,当你点击分页的时候,current就是你当前点击的这个分页的页码,也就是当前你在点击第几页,然后会跳转到location.href指定的超链接中去,然后经过urls匹配和视图函数处理,会得到你要请求的页码,并生成目标页的数据,返回给html页面,从而实现了一次分页查询!