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

  

 

 

posted on 2018-12-18 06:53  bainianminguo  阅读(228)  评论(0编辑  收藏  举报