class Paginator(object): def __init__(self,totleCount,currentPage,perPageNum=4,maxPageNum=7): # 數據總個數 self.totle_count = totleCount # 當前頁 try: v = int(currentPage) if v < 0: v=1 self.current_page = v except Exception as e: self.current_page = 1 # 每頁顯示的行數 self.per_page_item_num = perPageNum # 最大頁碼數 self.max_page_num = maxPageNum def start(self): return (self.current_page-1)*self.per_page_item_num def end(self): return self.current_page * self.per_page_item_num @property def num_pages(self): # 總頁數 a,b = divmod(self.totle_count,self.per_page_item_num) if b == 0: return a return a+1 def pager_num_range(self): # 當前頁 # self.current_pager # 最多顯示頁碼的數量 # self.per_pager_num # 總頁數 # self.num_pages # 若是 總頁數 小於 最多顯示頁碼數 返回 1--總頁數 if self.num_pages < self.max_page_num: return range(1, self.num_pages+1) part = self.max_page_num//2 if self.current_page <= part: return range(1,self.max_page_num+1) if (self.current_page+part)>=self.num_pages: return range(self.num_pages-part,self.num_pages+1) return range(self.current_page-part,self.current_page+part+1) def page_str(self): page_list = [] page_list.append('<ul class="pagination">') first = '<li><a href="/index?p=1" style="font-size:15px;">首頁<a></li>' page_list.append(first) if self.current_page == 1: prev = '<li><a href="#" style="font-size:15px;">上一頁<a></li>' else: prev = '<li><a href="/index?p=%s" style="font-size:15px;">上一頁<a></li>'%(self.current_page-1) page_list.append(prev) for i in self.pager_num_range(): if i == self.current_page: temp = '<li class="active"><a href="/index?p=%s" style="font-size:30px;">%s</a></li>'%(i,i) else: temp = '<li><a href="/index?p=%s" style="font-size:15px;">%s</a></li>' % (i, i) page_list.append(temp) if self.current_page == self.num_pages: prev = '<li><a href="#" style="font-size:15px;">下一頁<a></li>' else: prev = '<li><a href="/index?p=%s" style="font-size:15px;">下一頁<a></li>'%(self.current_page+1) page_list.append(prev) end = '<li><a href="/index?p=%s" style="font-size:15px;">尾頁<a></li>'%(self.num_pages) page_list.append(end) page_list.append('</ul>') return ''.join(page_list) def stu_page_str(self): page_list = [] first = '<li><a href="/students?p=1" style="font-size:15px;">首頁<a></li>' page_list.append(first) if self.current_page == 1: prev = '<li><a href="#" style="font-size:15px;">上一頁<a></li>' else: prev = '<li><a href="/students?p=%s" style="font-size:15px;">上一頁<a></li>'%(self.current_page-1) page_list.append(prev) for i in self.pager_num_range(): if i == self.current_page: temp = '<li class="active"><a href="/students?p=%s" style="font-size:30px;">%s</a></li>'%(i,i) else: temp = '<li><a href="/students?p=%s" style="font-size:15px;">%s</a></li>' % (i, i) page_list.append(temp) if self.current_page == self.num_pages: prev = '<li><a href="#" style="font-size:15px;">下一頁<a></li>' else: prev = '<li><a href="/students?p=%s" style="font-size:15px;">下一頁<a></li>'%(self.current_page+1) page_list.append(prev) end = '<li><a href="/students?p=%s" style="font-size:15px;">尾頁<a></li>'%(self.num_pages) page_list.append(end) return ''.join(page_list) def tea_page_str(self): page_list = [] first = '<li><a href="/teachers?p=1" style="font-size:15px;">首頁<a></li>' page_list.append(first) if self.current_page == 1: prev = '<li><a href="#" style="font-size:15px;">上一頁<a></li>' else: prev = '<li><a href="/teachers?p=%s" style="font-size:15px;">上一頁<a></li>'%(self.current_page-1) page_list.append(prev) for i in self.pager_num_range(): if i == self.current_page: temp = '<li class="active"><a href="/teachers?p=%s" style="font-size:30px;">%s</a></li>'%(i,i) else: temp = '<li><a href="/teachers?p=%s" style="font-size:15px;">%s</a></li>' % (i, i) page_list.append(temp) if self.current_page == self.num_pages: prev = '<li><a href="#" style="font-size:15px;">下一頁<a></li>' else: prev = '<li><a href="/teachers?p=%s" style="font-size:15px;">下一頁<a></li>'%(self.current_page+1) page_list.append(prev) end = '<li><a href="/teachers?p=%s" style="font-size:15px;">尾頁<a></li>'%(self.num_pages) page_list.append(end) return ''.join(page_list)