Django 分页器

Django 分页器

分页器
urls.py

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^page/', views.page),    # 路由到分页器函数
]

views.py

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

from hc import models

def test(request):
    user = models.UserInfo.ojbects.all()  # 这里是获取数据库的数据
    p = Paginator(user,3)    # p = 实例化对象 (对象, 开头显示几条数据)
    
    print ('数据总数:  ', p.count)          #页码总数

    print ('数据页数:  ', p.num_pages)      #当前页码

    print ('range(x, y):  ', p.page_range)  #从多少页 到多少页

    print ('是否有下一页:  ', p.page(2).has_next())   #是否有下一页

    print ('是否有上一页:  ', p.page(2).has_previous())   #是否有上一页
 
    print ('是否有其他页:  ', p.page(2).has_other_pages())   #是否有其他页

    print ('下一页的页码:  ', p.page(2).next_page_number())   #下一页的页码

    print ('上一页的页码:  ', p.page(2).previous_page_number())   #上一页的页码

    get_page = int(reuqest.GET.get('page',1))   #接收进来的是字符串,需要转换类型


    #异常处理
    try:
        user_page = p.page(get_page)    #跳转当前页面

    except PageNotAnInteger:
        user_page = p.page(1)     #回到首页

    except EmptyPage:
        user_page = p.page(p.num_pages)    #回到当前页面

    return render(request, 'page.html', locals())

template

<table>
    <thead>
        <tr>
            <th>用户名</th>
            <th>密码</th>
            <th>人名</th>
        </tr>
    </thead>
    <tbody>
        {% for item in user_page %}
            <tr>
                <td>{{item.username}}</td>
                <td>{{item.password}}</td>
                <td>{{item.name}}</td>
            </tr>
         {% endfor %}
    </tbody>

</table>

<div>
    <ul class="pagination" id="pager">

        {% if user_page.has_previous %}
            <li class="previous"><a href="/page/?page={{user_page.previous_page_number}}">上一页</a></li>
        {% else %}
            <li class="previous disavled"><a href="#">上一页</a></li>
        {% endif %}


        {% for num in p.page_range %}

            {% if num == page %}
               <li class="item active"><a href="/page/?page={{ num }}">{{ num }}</a></li>

            {% else %}
               <li class="item"><a href="/page/?page={{ num }}">{{ num }}</a></li>

            {% endif %}

        {% endfor %}

        {% if user_page.has_next %}
             <li class="next"><a href="/page/?page={{ user_page.next_page_number }}">下一页</a></li>
        {% else %}
             <li class="next disabled"><a href="#">下一页</a></li>
         {% endif %}

    </ul>

</div>
posted @ 2019-04-23 17:50  H·c  阅读(143)  评论(0编辑  收藏  举报