zoukankan      html  css  js  c++  java
  • [Django学习] Django基础(5)_优化分页器

    一. 基本样式

    主要优化内容:

    #1. 当前页高亮
    #2. 显示当前页及其前后两页
    #3. 显示省略号标记
    #4. 显示首尾页
    #5. 将“页数描述文字”放置在“页码栏”下方
    #6. “页码栏”与“页数描述文字”居中显示  

    二. 当前页高亮

      在模版中判断显示的页码是否是当前的页码,若是,添加class='active'属性

    {% for page_num in page_of_blogs.num_pages%} 
      {% if page_num == page_of_blogs.number %}
        <li class='active'><span>{{ page_num }}</span></li>
      {% else %}
        <li><a href="?page={{ page_num }}">{{ page_num }}</a></li>
      {% endif %}
    {% endfor %}

    三. 显示当前页及其前后两页

    前两页 前一页 当前页 后一页 后两页
    current_page-2 current_page-1 current_page current_page+1 current_page+2

      current_page-2 最小值为1,current_page+2最大值为分页器的最大页数

    # 获取当前页码
    current_page_num = page_of_blogs.number
    # 设置前后可显示页码范围
    page_range = list(range(max(current_page_num-2,1), current_page_num)) + 
            list(range(current_page_num, min(current_page_num + 2, paginator.num_pages) + 1))
    # 修改循环显示的页码范围
    {% for page_num in page_range %} 
      {% if page_num == page_of_blogs.number %} 
        <li class='active'><span>{{ page_num }}</span></li> 
      {% else %} 
        <li><a href="?page={{ page_num }}">{{ page_num }}</a></li> 
      {% endif %} 
    {% endfor %}
    

    四. 显示省略号标记

    # 添加省略号标记
    if (page_range[0] - 1 >= 2):
        page_range.insert(0,'...')
    if (paginator.num_pages - page_range[-1] >= 2):
        page_range.append('...')
    
    {% for page_num in page_range %}
        {% if page_num == page_of_blogs.number %}
            <li class='active'><span>{{ page_num }}</span></li>
        {% else %}
            # 取消当前页为'...'的链接功能
            {% if page_num == '...' %}
                <li><span>{{ page_num }}</span></li>
            {% else %}
                <li><a href="?page={{ page_num }}">{{ page_num }}</a></li>
            {% endif %}														
        {% endif %}
    {% endfor %}    
    

    五. 显示首尾页

      将首页和尾页加入到page_range中

    # 先加入'...'标记
        
    # 再将第一页与最后一页始终显示
    if (page_range[0] != 1):
        page_range.insert(0,1)
    if (page_range[-1] != paginator.num_pages):
        page_range.append(paginator.num_pages)

    六. 将“页数描述”放置在“页码栏”下方,并居中显示

     <div class="paginator">
         <ul class="pagination">
            </ul>
    	<p>
    		共有{{ page_of_blogs.paginator.count}}篇博客, 
                    当前为第{{page_of_blogs.number}}页, 
                    共{{page_of_blogs.paginator.num_pages}}页
    	</p>
    </div>    
    
    div.paginator {
    	text-align: center;
    }
    

    注明:学习资料来自“再敲一行代码的个人空间”以及“杨仕航的博客” 

  • 相关阅读:
    P3157 [CQOI2011]动态逆序对
    P2468 [SDOI2010]粟粟的书架
    P2564 [SCOI2009]生日礼物
    P2698 [USACO12MAR]花盆Flowerpot
    【2018 Multi-University Training Contest 6】
    【HDOJ6351】Beautiful Now(贪心,搜索)
    【HDOJ6354】Everything Has Changed(计算几何)
    【2018 Multi-University Training Contest 5】
    【HDOJ6319】Ascending Rating(单调队列)
    【Educational Codeforces Round 48】
  • 原文地址:https://www.cnblogs.com/AngryZe/p/9259701.html
Copyright © 2011-2022 走看看