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算法:树遍历
    java算法:图遍历(深度优先和广度优先)
    Google禁止继续研发开源的"盖亚计划"
    Vc编程调试入门
    访著名Linux内核程序员大鹰
    访著名Linux内核程序员大鹰
    百度玩"精准搜索" 个人隐私保护问题值得商榷
    Google禁止继续研发开源的"盖亚计划"
    加密CMD使电脑溢出也拿不到CMD权限
    百度玩"精准搜索" 个人隐私保护问题值得商榷
  • 原文地址:https://www.cnblogs.com/xiao2er/p/10303816.html
Copyright © 2011-2022 走看看