• Django【进阶篇-分页】


    定义一个分页类,封装起来,保存到目录下面方便调用:pagination.py

     具体完整代码:

    from django.utils.safestring import mark_safe
    #分页类
    class Page(object):
    
        def __init__(self,current_page,data_count,per_page_count=10,page_num=11):
            """
                current_page:当前页
                data_count:数据量
                per_page_count:每页显示多少行数据
                page_num: 显示固定多少行页码
            """
            self.current_page = current_page
            self.data_count = data_count
            self.per_page_count = per_page_count
            self.page_num = page_num
    
        @property
        def start(self):
            """
                切片起始值
            """
            return (self.current_page-1) * self.per_page_count
    
        @property
        def end(self):
            """
                切片末尾值
            """
            return self.current_page * self.per_page_count
        @property
        def total_count(self):
            """
                总页码:v
                余数:y
                total_count返回的就是总页码值
            """
            v,y=divmod(self.data_count,self.per_page_count)
            if y:
                v +=1
            return v
        def page_str(self,base_url):
            """
                生成页码,上下页, 跳转等功能
                base_url:接收用户的url
            """
            self.base_url=base_url
            """
                page_list:页码列表
            """
            page_list = []
            if self.total_count < self.page_num:
                start_index=1
                end_index=self.total_count +1
            else:
                if self.current_page <= (self.page_num +1)/2:
                    start_index = 1
                    end_index = self.page_num +1
                else:
                    start_index= self.current_page - (self.page_num -1)/2
                    end_index= self.current_page +(self.page_num +1)/2
                    if self.current_page + (self.page_num -1)/2 > self.total_count:
                        start_index = self.current_page -self.page_num +1
                        end_index = self.total_count +1
            # 上一页
            if self.current_page == 1:
    
                prev = '<a class="page" href="javascript:void(0)">上一页</a>'
            else:
    
                prev='<a class="page" href="/cmdb/%s/?p=%s">上一页</a>' %(self.base_url,self.current_page - 1)
    
            page_list.append(prev)
            # 循环的总页码
            for i in range(int(start_index),int(end_index)):
                if i == self.current_page:
                    temp = '<a class= " page active"  href="/cmdb/%s/?p=%s">%s</a>' % (self.base_url, i, i)
                else:
                    temp= '<a class= "page" href="/cmdb/%s/?p=%s">%s</a> ' % (self.base_url,i,i)
                page_list.append(temp)
            #下一页
            if self.current_page == self.total_count:
                next = '<a class="page" href="javascript:void(0)">下一页</a>'
            else:
    
                next = '<a class="page" href="/cmdb/%s/?p=%s">下一页</a>' % (self.base_url, self.current_page + 1)
            page_list.append(next)
            #跳转指定页码
            jump="""
                <input type="text" name=choice />
                <a onclick='jumpto(this,"/cmdb/%s/?p=");' id="ii1"><input type="button" value="Go"/></a>
                <script>
                 function jumpto(ths,base){
                        var  val=ths.previousSibling.value;
                        if (val == "")
                        {
                         alert("内容不能为空");
                         
                        }else if(val >%s){
                        alert("页码不存在");
                        }else{
                        location.href = base + val;
                        }
                        console.log(this)
    
                    }
                </script>
            """ % (self.base_url)
            page_list.append(jump)
            #拼接字符串
            page_str= "".join(page_list)
            page_str=mark_safe(page_str)
            return page_str

    views视图:

      —调用封装好的类

     返回的page_str字符串到user_list.html界面进行渲染:

    jquery代码:

     

     tag:在页面通过include导入

  • 相关阅读:
    为https请求配置ssl(不用keystore,直接用证书,rsa私钥,java代码)
    http请求对于List类型参数的处理
    java中string转ByteBuffer
    lua for循环如何从第0位开始
    lua中的cjson简单使用
    mongodb返回方便读的数据
    markdown简单插入图片
    #问题#java报Annotation processing is not supported for module cycles
    #问题#java报can't create non-static inner class instance
    git commit+push的完整步骤
  • 原文地址:https://www.cnblogs.com/fuyuteng/p/12255436.html
Copyright © 2020-2023  润新知