zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    LeetCode 141. Linked List Cycle(判断链表是否有环)
    LeetCode 680. Valid Palindrome II(双指针)
    >/dev/null 2>&1
    18个最佳代码编辑器
    vi和vim常用命令
    搞定Windows连Linux三大件:SecureCRT,FileZilla,NX
    define和typedef的区别
    C++ const,static成员
    C++虚函数练习题
    c++虚函数解析
  • 原文地址:https://www.cnblogs.com/huidou/p/10757873.html
Copyright © 2011-2022 走看看