django1.8.2 建站实现分页显示功能

个人经验:

django先写view,在再写url,最后写html文件。

要实现某个功能,先google查找相关文章,在到文档中寻找相关章节,最后本地实现功能。

 

 

1、django1.8.2 实现分页功能

  分页功能,文档中有Paginator类,里面有丰富的功能。如果使用了通用视图(from django.views.generic import ListView),可以直接使用Page objects的属性函数。

 

2、django文档地址:  

http://python.usyiyi.cn/django_182/topics/pagination.html #使用Page objects的属性函数

https://docs.djangoproject.com/en/1.9/topics/class-based-views/mixins/ #(1.8相同)通用视图分页文档,里面
的默认page_obj,在html文件中要用到。

 

3、代码

view.py

1 class IndexView(ListView):
2     model = Article
3     template_name = 'blog/index.html'
4     context_object_name = 'latest_article_list'
5     paginate_by = 2
6 
7     def get_queryset(self):
8         return Article.objects.order_by('-updated')

涉及分页功能的只有paginate_by = 2 #设置每页显示数目

 

前端代码

 1 <!--分页显示-->
 2 <div class="pagination pagination-right">
 3     <ul contenteditable="false">
 4         <li><a href="{{ request.path }}?page=1">&laquo;</a></li>
 5         {% if page_obj.has_previous %}
 6             <li><a href="{{ request.path }}?&page={{ page_obj.previous_page_number }}">上一页</a></li>
 7         {% endif %}
 8         {% for i in page_obj.paginator.page_range %}
 9             <li {% if page_obj.number == i %}class="active"{% endif %}><a href="{{ request.path }}?page={{ i }}">{{ i }}</a></li>
10         {% endfor %}
11         {% if page_obj.has_next %}
12             <li><a href="{{ request.path }}?&page={{ page_obj.next_page_number }}">下一页</a></li>
13         {% endif %}
14         <li><a href="{{ request.path }}?page={{ page_obj.paginator.num_pages }}">&raquo;</a></li>
15     </ul>
16 </div>

里面使用到的函数在链接(http://python.usyiyi.cn/django_182/topics/pagination.html)里面有详细介绍

 

参考网站:

http://lihuipeng.blog.51cto.com/3064864/1436010  #通用视图写法,参考前端

 

4、最终效果

 

end

 

 

 



 

posted @ 2016-01-24 17:33  hb91  阅读(630)  评论(0编辑  收藏  举报