我们的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)

 
                    
                     
                    
                 
                    
                 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号