zoukankan      html  css  js  c++  java
  • django-分页(非海量数据)

    views.py

    class AnalysisDataHandler(View):
        def get(self, request):
            analysis_data = MonitorCenterDataAnalysis.objects.all().order_by('create_time').reverse()
            paginator = Paginator(analysis_data, 2)  # 每页显示10条数据
            num_pages = paginator.num_pages  # 总页数
            page = request.GET.get('page')
            if not page:
                page = 1
            else:
                page = int(page)
            #分页方式:以5页为基准
            #一:少于5页
                #无:页码按钮及左右侧翻页按钮都不存在
                #有:左右侧按钮至少存在一个,并且有全部页码按钮
            #二:大于等于5页
                #左侧、右侧翻页按钮至少一个存在,并且有5页码按钮
            try:
                analysis_data = paginator.page(page)
    
                if num_pages < 5:
                    page_num_list = [i for i in range(1, num_pages+1)]
                elif page in [1, 2, 3]:
                    page_num_list = [1, 2, 3, 4, 5]
                elif page in [num_pages-1, num_pages-2, num_pages]:
                    page_num_list = [i for i in range(num_pages-4, num_pages+1)]
                else:
                    page_num_list = [i for i in range(page-2, page+3)]
                analysis_data.page_num_list = page_num_list
            except PageNotAnInteger:
                # 如果page不是一个整数,则展示第一页。
                analysis_data = paginator.page(1)
            except EmptyPage:
                # 如果page不在范围内(例如,9999),则展示结果的最后一页。
                analysis_data = paginator.page(paginator.num_pages)
    
            return render(request, 'flowmgr/analysis_data.html', {'analysis_data': analysis_data})
    

    analysis_data.html

    <div style="float: right">
        <ul class="pagination">
            {% if analysis_data.has_previous %}
                <li>
                    <a href="?page={{ analysis_data.previous_page_number }}" aria-label="上一页">
                        <span aria-hidden="true">«</span>
                    </a>
                </li>
            {% endif %}
            {% for index in analysis_data.page_num_list %}
                {% if index == analysis_data.number %}
                    <li class="disabled"><a href="?page={{ index }}">{{ index }}</a></li>
                {% else %}
                    <li class="active"><a href="?page={{ index }}">{{ index }}</a></li>
                {% endif %}
            {% endfor %}
            {% if analysis_data.has_next %}
                <li>
                    <a href="?page={{ analysis_data.next_page_number }}" aria-label="下一页">
                        <span aria-hidden="true">»</span>
                    </a>
                </li>
            {% endif %}
        </ul>
    </div
    

      

      

  • 相关阅读:
    怎样使用Chrome模拟手机浏览器測试移动端网站
    [Erlang危机](5.1.3)进程
    Oracle ErrorStack 使用和阅读具体解释
    动态规划之整齐打印
    struts2+Oracle实现管理员查看用户提交的意见功能
    hdu 4956 Poor Hanamichi BestCoder Round #5(数学题)
    2014牡丹江——Known Notation
    诗云:静观天下
    QQ欢乐斗地主心得体会 (三):高倍场攻略
    QQ欢乐斗地主心得体会 (三):高倍场攻略
  • 原文地址:https://www.cnblogs.com/Fmaj7/p/12205171.html
Copyright © 2011-2022 走看看