zoukankan      html  css  js  c++  java
  • django 后端分页

    分页处理脚本:

    # -*- coding: utf-8 -*-
    
    # @Time    : 2019-01-22 10:41
    # @Author  : 小贰
    # @FileName: page.py
    # @function: 作者比较懒什么都没写
    
    def control(current_page,page_nums):
    
        list_size = 5
        if page_nums<=list_size:
            page_list= list(range(1,page_nums+1))
        else:
            if (page_nums-list_size)<=list_size:
                page_list = list(range(1,page_nums+1))
            else:
                if (page_nums-current_page)<list_size:
                    page_list = [1,2,"..."]+list(range(page_nums - 4, page_nums + 1))
                else:
                    if current_page>list_size:
                        page_list = list(range(current_page-4, current_page + 1)) + ["...", page_nums - 1, page_nums]
                    else:
                        page_list = list(range(1, list_size + 1)) + ["...", page_nums - 1, page_nums]
        return page_list
    
    if __name__ == "__main__":
        current_page=120
        page_nums=200
        print(control(current_page,page_nums))

    视图:

    class OpsLog(View):
        """操作日志"""
        @method_decorator(csrf_exempt)
        @method_decorator(login_check)
        @method_decorator(perms_check)
        def dispatch(self, request, *args, **kwargs):
            return super(OpsLog,self).dispatch(request,*args, **kwargs)
    
        def get(self,request,page=1):
            title = "操作日志"
            audit_obj = log_db.OpsLog.objects.all().order_by("-start_time")
            pagesize = 13
            paginator = Paginator(audit_obj, pagesize)
            # 从前端获取当前的页码数,默认为1
            # 把当前的页码数转换成整数类型
            currentPage = int(page)
            page_nums = paginator.num_pages
            #获取分页信息
            page_list = pg.control(currentPage, page_nums)
            try:
                audit_list = paginator.page(page)  # 获取当前页码的记录
            except PageNotAnInteger:
                audit_list = paginator.page(1)  # 如果用户输入的页码不是整数时,显示第1页的内容
            except EmptyPage:
                audit_list = paginator.page(paginator.num_pages)
    
            return render(request,'log_opslog.html',locals())

    url配置:

    urlpatterns = [
        path("opslog/<int:page>/",views.OpsLog.as_view()),
    ]

    模板:

    <div class="text-right" style="margin-top:-30px;padding-right:9%">
        <ul class="pagination" id="pager">
            <li class="previous"><a href="/log/opslog/1/">首页</a></li>
            {#上一页按钮开始#}
            {# 如果当前页有上一页#}
            {% if audit_list.has_previous %}
            {#  当前页的上一页按钮正常使用#}
            <li class="previous"><a href="/log/opslog/{{ audit_list.previous_page_number }}/">上一页</a></li>
            {% else %}
            {# 当前页的不存在上一页时,上一页的按钮不可用#}
            <li class="previous disabled"><a href="javascript:;">上一页</a></li>
            {% endif %}
            {#上一页按钮结束#}
            {# 页码开始#}
            {% for num in page_list  %}
            {% if num == currentPage %}
            <li class="item active"><a href="/log/opslog/{{ num }}/">{{ num }}</a></li>
            {% else %}
            <li class="item"><a href="/log/opslog/{{ num }}/">{{ num }}</a></li>
            {% endif %}
            {% endfor %}
            {#页码结束#}
            {# 下一页按钮开始#}
            {% if audit_list.has_next %}
            <li class="next"><a href="/log/opslog/{{ audit_list.next_page_number }}/">下一页</a></li>
            {% else %}
            <li class="next disabled"><a href="javascript:;">下一页</a></li>
            {% endif %}
            <li class="previous"><a href="/log/opslog/{{ page_nums }}/">尾页</a></li>
            {# 下一页按钮结束#}
        </ul>
    </div>

    效果:

  • 相关阅读:
    Java实现 蓝桥杯VIP 算法训练 数的统计
    Java实现 蓝桥杯VIP 算法训练 和为T
    Java实现 蓝桥杯VIP 算法训练 友好数
    Java实现 蓝桥杯VIP 算法训练 连续正整数的和
    Java实现 蓝桥杯VIP 算法训练 寂寞的数
    Java实现 蓝桥杯VIP 算法训练 学做菜
    Java实现 蓝桥杯VIP 算法训练 暗恋
    Java实现 蓝桥杯VIP 算法训练 暗恋
    测试鼠标是否在窗口内,以及测试鼠标是否在窗口停留
    RichEdit 各个版本介绍
  • 原文地址:https://www.cnblogs.com/xiao2er/p/10303816.html
Copyright © 2011-2022 走看看