web开发 Django开发交流群:19525555 注册 | 登陆

Django 内置分页类

参考了 <The Django Book> 相关资料,原来用Django内置的分页功能实现分页,比我想象还要简单很多.

简单例子

 

views.py
  1. from django.core.paginator import Paginator    
  2. from models import MyModel  
  3.   
  4. def list(request):  
  5.     try:  
  6.         page = int(request.GET.get('page',1))  
  7.         if page < 1:  
  8.             page = 1  
  9.     except ValueError:  
  10.         page = 1  
  11.   
  12.     my_data = MyModel.objects.all()  
  13.     paginator = Paginator(my_data, 10)  
  14.   
  15.     try:  
  16.         my_data_list = paginator.page(page)  
  17.     except:  
  18.         my_data_list = paginator.page(1)  
  19.       
  20.     return render_to_response('my_template.html', locals())  
XML/HTML代码
  1. {% for data in my_data_list .object_list %}  
  2.     {{ data }}<br />  
  3. {% endfor %}  
  4.   
  5. <div class="pagination">  
  6.     <span class="step-links">  
  7.         {% if my_data_list.has_previous %}  
  8.             <a href="?page={{ my_data_list.previous_page_number }}">previous</a>  
  9.         {% endif %}  
  10.   
  11.         <span class="current">  
  12.             Page {{ my_data_list.number }} of {{ my_data_list.paginator.num_pages }}.  
  13.         </span>  
  14.   
  15.         {% if my_data_list.has_next %}  
  16.             <a href="?page={{ my_data_list.next_page_number }}">next</a>  
  17.         {% endif %}  
  18.     </span>  
  19. </div>  

 

my_data_list 对象中包含了多个属性和方法,可以非常方便的进行页面显示,链接生成

其中属性 : 数据对象列表 (object_list)中,每一个元素就是一个 model 对象.

关于 my_data_list 对象的其他方法和属性,可以通过 dir 方法查看

Python代码
  1. return render_to_response('my_template.html''my_data_list':dir(my_data_list))  

PS:

Python代码
  1. # 获取数据的时候 使用 all() 方法  
  2.  my_data = MyModel.objects.all()   
根据打印出来的 sql 语句,发现它并不会取出所有记录.

 官方文档说明:

http://docs.djangoproject.com/en/dev/topics/pagination/

Tags: django

« 上一篇 | 下一篇 »

只显示10条记录相关文章

[转] Django 调试 (浏览: 335, 评论: 1)
Django遍历输出字典key,value (浏览: 893, 评论: 4)
Django session file 无法保存数据问题 (浏览: 543, 评论: 1)
使用django forms 实现无限分级 (浏览: 541, 评论: 1)
Django settings.py 配置必须大写 (浏览: 551, 评论: 0)
django在模板获取当前用户 (浏览: 546, 评论: 0)
Django 输出sql语句 (浏览: 741, 评论: 0)
Django模板使用全局变量 (浏览: 721, 评论: 1)
Windows环境下配置 Apache2+MySQL+mod_python+Django (浏览: 1492, 评论: 0)
有关Django性能优化总结 (浏览: 798, 评论: 0)

Trackbacks

点击获得Trackback地址,Encode: UTF-8

发表评论

评论内容 (必填):