zoukankan      html  css  js  c++  java
  • stark组件之分页【模仿Django的admin】

    我们的stark组件用的我们的分页组件,没有重新写

    下面直接看下分页的代码

    class page_helper():
        def __init__(self, count, current_page, per_page_num, base_url,parms):
            self.count = count
            self.current_page = current_page
            self.per_page_num = per_page_num
            self.base_url = base_url
            self.page_head = "<nav aria-label='Page navigation'><ul class='pagination'>"
            self.page_tail = "</ul></nav>"
            import copy
            parms = copy.deepcopy(parms)
            parms._mutable = True
            self.parms = parms
    
    
        def page_count(self):
            before, after = divmod(self.count, self.per_page_num)
            if after > 0:
                class_count = before + 1
            else:
                class_count = before
            print("-------------",class_count,self.count,self.per_page_num)
            return class_count
    
        def page_start(self):
            if self.page_count() <= 11:
                start_int = 1
                end_int = self.page_count()
            else:
                if self.current_page <= 6:
                    start_int = 1
                    end_int = 11
                elif self.current_page + 5 + 1 > self.page_count():
                    start_int = self.page_count() - 10
                    end_int = self.page_count() + 1
                else:
                    start_int = self.current_page - 5
                    end_int = self.current_page + 5 + 1
            return start_int
    
        def page_end(self):
            if self.page_count() <= 11:
                start_int = 1
                end_int = self.page_count()
            else:
                if self.current_page <= 6:
                    start_int = 1
                    end_int = 11
                elif self.current_page + 5 + 1 > self.page_count():
                    start_int = self.page_count() - 10
                    end_int = self.page_count() + 1
                else:
                    start_int = self.current_page - 5
                    end_int = self.current_page + 5 + 1
    
            return end_int
    
        def db_start(self):
            return (self.current_page - 1) * self.per_page_num + 1
    
        def db_end(self):
            return self.current_page * self.per_page_num + 1
    
        def page_list(self):
            print(self.parms,dir(self.parms),"======================",self.parms.urlencode())
            if self.current_page == 1:
                before_page = "<li class='disable'><a href='#' aria-label='Previous'><span aria-hidden='true'>«</span></a></li>"
            else:
                self.parms["p"] = self.current_page - 1
                before_page = "<li class='disable'><a href='{url}?{args}' aria-label='Previous'><span aria-hidden='true'>«</span></a></li>".format(url=self.base_url, args=self.parms.urlencode())
            page_list = []
            page_list.append(before_page)
    
            for i in range(self.page_start(), self.page_end() + 1):
                self.parms["p"] = i
                if i == self.current_page:
    
                    s = """<li class="active"><a href="{url}?{args}">{num}</a></li>""".format(url=self.base_url, args=self.parms.urlencode(),num=self.parms["p"])
                else:
                    s = """<li><a href="{url}?{args}">{num}</a></li>""".format(url=self.base_url,  args=self.parms.urlencode(),num=self.parms["p"])
                page_list.append(s)
            if self.current_page == self.page_count():
                after_page = """<li class='disable'><a href="#" aria-label="Next"><span aria-hidden="true">»</span></a></li>"""
            else:
                self.parms["p"] = self.current_page + 1
                after_page = """<li><a href="{url}?{args}" aria-label="Next"><span aria-hidden="true">»</span></a></li>""".format(url=self.base_url, args=self.parms.urlencode())
            page_list.append(after_page)
            page_body = "".join(page_list)
            page_str = self.page_head + page_body + self.page_tail
    
            return page_str
    

      

    分页的代码在什么实用用呢?应该list_url这个函数把过滤和搜索后的数据传递个showlist这个类,然后这个类在根据这些要显示的数据在进行分页

    class Showlist(object):
        def __init__(self,config,request,new_list,new_data_list):
            self.config = config
            self.request = request
            self.new_list = new_list
            self.new_data_list = new_data_list
    
            # 分页显示
            count = self.new_data_list.count()
            current_page = int(request.GET.get("p",1))
            per_page_num = 3
            base_url = request.path_info
            parms = request.GET
            self.page_str = page.page_helper(count=count,current_page=current_page,per_page_num=per_page_num,base_url=base_url,parms=parms)
    

      

  • 相关阅读:
    用FileSystemWatcher监视文件系统
    生成随机汉字验证码
    MySQL学习笔记二
    python高级学习笔记
    boost bind 表达式中的是值语义还是指针语义?
    容器与适配器的个人总结
    subversion linux使用方法
    boost asio(初学示例)
    MySQL学习笔记一
    subversion 命令
  • 原文地址:https://www.cnblogs.com/bainianminguo/p/10134955.html
Copyright © 2011-2022 走看看