django paginator实现分页

今天用django-pagination实现分页,鼓捣了半天以失败告终,个人觉得是django-pagination最新版本和django不兼容,按照官方文档的案例来也不行。

最终用paginator成功实现分页,paginator为django自带的组件,不需要额外安装。

 

修改blog/views.py

from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.shortcuts import render

blogs = mySql.queryBlog()
paginator = Paginator(blogs, 2)# Show 2 blogs per page
page = req.GET.get('page')
try:
    currentPageBlogs = paginator.page(page)
except PageNotAnInteger:
    # If page is not an integer, deliver first page.
    currentPageBlogs = paginator.page(1)
except EmptyPage:
    # If page is out of range (e.g. 9999), deliver last page of results.
    currentPageBlogs = paginator.page(paginator.num_pages)
return render(req, 'checkblog.html', {'blogs': currentPageBlogs})

 

修改checkblog.html

{% for blog in blogs %}
        <p>
         <a href={{blog.1}} >{{blog.2}}</a>
         <span class="blogTime">{{blog.4}}</span>
          </p>
{% endfor %}

<div class="pagination">
        <span class="step-links">
            {% if blogs.has_previous %}
             <a href="?page={{ blogs.previous_page_number }}">previous</a>
            {% endif %}

            <span class="current">
            Page {{ blogs.number }} of {{ blogs.paginator.num_pages }}
            </span>

            {% if blogs.has_next %}
            <a href="?page={{ blogs.next_page_number }}">next</a>
            {% endif %}
        </span>
</div>

 

测试页面

 

参考:https://docs.djangoproject.com/en/1.9/topics/pagination/

posted on 2016-03-10 22:19  onmyway227  阅读(216)  评论(0编辑  收藏  举报

导航