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>
优质内容筛选与推荐>>
1、爬虫二:爬取糗事百科段子
2、java细节知识
3、poj 2769 感觉♂良好 (单调栈)
4、付忠庆的赛后小笔记 ---Qtech交流赛
5、[原创]开发一个适合Ajax+JSON+jQuery环境使用的多功能页码栏——jPagerBar-1.1.1


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号