本文朋友在上海喝咖啡的时候突然想到的...之前就有想写几篇关于分页数据的文章,所以回家到以后就奋笔疾书的写出来发布了
二、分页Paginator的解释
1 >>> from django.core.paginator import Paginator 2 >>> objects=['C#','Java','Python','JavaScript','PHP'] 3 >>> p =Paginator(objects,2) #每页两条数据的一个分页器 4 >>> p.count #数据总数 5 5 6 >>> p.num_pages #总页数 7 3 8 >>> p.page_range #页码的表列 9 [1, 2, 3] 10 >>> page1 = p.page(1) #第1页 11 >>> page1 12 <Page 1 of 3> 13 >>> page1.object_list #第1页的数据 14 ['C#', 'Java'] 15 >>> page2=p.page(2) #第2页 16 >>> page2 17 <Page 2 of 3> 18 >>> page2.object_list #第2页的数据 19 ['Python', 'JavaScript'] 20 >>> page2.has_next() #是不是有后一页 21 True 22 >>> page2.has_previous() #是不是有前一页 23 True 24 >>> page2.has_other_pages() #是不是有其他页 25 True 26 >>> page2.next_page_number() #后一页的页码 27 3 28 >>> page2.previous_page_number() #前一页的页码 29 1 30 >>> page2.start_index() # 本页第一条记载的序数(从1开始) 31 3 32 >>> page2.end_index() # 本页最后录一条记载的序数(从1开始) 33 4 34 >>> p.page(0) #错误的页,抛出异常 35 ...EmptyPage: That page number is less than 1 36 >>> p.page(3) #错误的页,抛出异常 37 ...EmptyPage: That page contains no results
接下来我们在视图数函中用使分页
每日一道理
我拽着春姑娘的衣裙,春姑娘把我带到了绿色的世界里。
我拽着春姑娘的衣裙,春姑娘把我带到了绿色的世界里。
def listing(request): """ 功能说明: 分页示显 ----------------------------------------------------------------------------- 改修人 改修时光 改修原因 ----------------------------------------------------------------------------- admin 2013-04-16 """ news=New.objects.all().order_by('-id') paginator =Paginator(news,5) #Show 5 news per page #定确分页求请是一个整数,如果不是则付交第一页 try: page=int(request.GET.get('page',1)) except VauleError: page=1 #如果分页求请过超范围,则付交最后一页 try: contacts=paginator.page(page) except (EmptyPage,InvalidPage): contacts = paginator.page(paginator.num_pages) return render_to_response('list.html',{'contacts':contacts})
在用使之前一定要住记导入:
from django.core.paginator import Paginator,EmptyPage,InvalidPage #导入分页模型
通过在url配置以后:
(r'^listing/$','login.views.listing'), #分页
接下来就是写模板了:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> {% for contact in contacts.object_list %} {# 每一个contact都是News的象对#} {{ contact.title}}<br/> {% endfor %} <hr style="color:#CC0"/> <div class="pagination"> <span class="step-links"> {% if contacts.has_previous %} <a href="?page={{ contacts.previous_page_number }}">上一页</a> {% endif %} <span class="current"> 第{{ contacts.number }}页/ 共 {{ contacts.paginator.num_pages}}页 </span> {% if contacts.has_next %} <a href="?page={{ contacts.next_page_number }}">下一页</a> {% endif %} </span> </div> </body> </html>
好了,启动服务器,在浏览器中看查结果:
文章结束给大家分享下程序员的一些笑话语录: 那是习惯决定的,一直保持一个习惯是不好的!IE6的用户不习惯多标签,但是最终肯定还是得转到多标签的浏览器。历史(软件UI)的进步(改善)不是以个人意志(习惯)为转移的!