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">«</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 }}">»</a></li> 15 </ul> 16 </div>
里面使用到的函数在链接(http://python.usyiyi.cn/django_182/topics/pagination.html)里面有详细介绍
参考网站:
http://lihuipeng.blog.51cto.com/3064864/1436010 #通用视图写法,参考前端
4、最终效果
end