zoukankan      html  css  js  c++  java
  • django网页分页

    blog/views.py
    from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
    #导入分页插件包
    def list(request,lid):
        ...
        page = request.GET.get('page')#在URL中获取当前页面数
        paginator = Paginator(list, 5)#对查询到的数据对象list进行分页,设置超过5条数据就分页
        try:
            list = paginator.page(page)#获取当前页码的记录
        except PageNotAnInteger:
            list = paginator.page(1)#如果用户输入的页码不是整数时,显示第1页的内容
        except EmptyPage:
            list = paginator.page(paginator.num_pages)#如果用户输入的页数不在系统的页码列表中时,显示最后一页的内容
        return render(request, 'list.html', locals())
    ------------------------------------------------------------------

    templates/list.html
    
    <div class="pagination">
        <ul>
            <li class="prev-page"></li>
            <li class="active"><span>1</span></li>
            <li><href="?page=2">2</a></li>
            <li class="next-page"><href="?page=2">下一页</a></li>
        </ul>
    </div>
    
    修改为:
    
    <div class="pagination">
        <ul>
            {% if list.has_previous %}
            <li class="prev-page"><href="?page={{ list.previous_page_number }}">上一页</a></li>
            {% else %}
             <li class="prev-page"></li>
            {% endif %}
    
    
                {% for num in list.paginator.page_range %}
                    {% if num %}
                        {% ifequal num list.number %}
                            <li class="active"><span>{{ num }}</span></li>
                        {% else %}
                            <li><href="?page={{ num }}">{{ num }}</a></li>
                        {% endifequal %}
                    {% else %}
                        <li class="disabled"><span>...</span></li>
                    {% endif %}
                {% endfor %}
    
    
                {% if list.has_next %}
                    <li class="next-page"><href="?page={{ list.next_page_number }}">下一页</a></li>
                {% else %}
                    <li class="prev-page"></li>
                {% endif %}
        </ul>
    </div>

    --------------------------------------

          {# 如果 a1 == a2 则显示 #}
            {% ifequal a1 a2 %}
                <h1>equal!</h1>
            {% else %}
                <h1>not equal!</h1>
            {% endifequal %}
    ---------------------

    list.number  为list = paginator.page(page)#获取当前页码的记录,list获得的number方法

    {% for num in list.paginator.page_range %}中的

    附:Paginator类的解释,方法,属性

    class Paginator(object):

    def __init__(self, object_list, per_page, orphans=0,
    allow_empty_first_page=True):
    self.object_list = object_list
    self.per_page = int(per_page)
    self.orphans = int(orphans)
    self.allow_empty_first_page = allow_empty_first_page
    self._num_pages = self._count = None
    ---------------------

    1.根据其定义做出以下解释:
    object_list:可以是列表,元组,查询集或其他含有 count() 或 len()方法的可切片对象。对于连续的分页,查询集应该有序,例如有order_by()项或默认ordering参数。
    per_page:每一页中包含条目数目的最大值,不包括独立成页的那页。(见下面 orphans参数解释)。
    orphans=0:当你使用此参数时说明你不希望最后一页只有很少的条目。如果最后一页的条目数少于等于orphans的值,则这些条目会被归并到上一页中(此时的上一页变为最后一页)。例如有23项条目, per_page=10,orphans=0,则有3页,分别为10,10,3.如果orphans>=3,则为2页,分别为10,13。
    allow_empty_first_page=True: 默认允许第一页为空。
    2.类方法:

    Paginator.page(number):根据参数number返回一个Page对象。(number为1的倍数)
    1
    3.类属型:

    Paginator.count:所有页面对象总数,即统计object_list中item数目。当计算object_list所含对象的数量时, Paginator会首先尝试调用object_list.count()。如果object_list没有 count() 方法,Paginator 接着会回退使用len(object_list)。
    Pagnator.num_pages:页面总数。
    pagiator.page_range:页面范围,从1开始,例如[1,2,3,4]。
    ---------------------
    作者:The Winslow Accord
    来源:CSDN
    原文:https://blog.csdn.net/kasumiutaha/article/details/85077081
    版权声明:本文为博主原创文章,转载请附上博文链接!

     




  • 相关阅读:
    jmeter(十八)属性和变量
    jmeter(十七)逻辑控制器
    jmeter(九)分布式测试
    jmeter(八)HTTP属性管理器HTTP Cookie Manager、HTTP Request Defaults
    jmeter(七)函数
    jmeter(六)关联
    jmeter(五)集合点
    jmeter(四)检查点
    jmeter(三)参数传递
    jmeter(二)元件的作用域与执行顺序
  • 原文地址:https://www.cnblogs.com/master-road/p/10366264.html
Copyright © 2011-2022 走看看