#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2017/5/3 10:09 # @Author : MnCu # @Site : # @File : utils.py # @Software: PyCharm class Pagination(object): ''' controller 首先创建Pagination对象,然后调用该对象的generate方法生成HTML数据,然后render() generate方法会生成一个显示页数为10的分页HTML ''' def __init__(self, entry_length, entrys_per_page, current_page, pre_url, current_page_css='alive'): ''' :param entry_length: 显示条目的长度 :param current_page: 当前页 :param pre_url: 显示页的URL前缀 :param current_page_css: 当前页的css样式 ''' page_length, residue = divmod(entry_length, entrys_per_page) self.page_length = page_length + 1 if residue > 0 else page_length self.current_page = current_page assert 0 < current_page <= self.page_length self.pre_url = pre_url self.current_page_css = current_page_css def generate(self): html = '<ul>%s' % self.generate_pre_page() if self.page_length < 10: html += self._generate_range_page(1,self.current_page) html += self.generate_current_page() html += self._generate_range_page(self.current_page+1, self.page_length+1) else: if self.current_page <= 5: html += self._generate_range_page(1, self.current_page) html += self.generate_current_page() html += self._generate_range_page(self.current_page+1, 11) elif self.current_page <= self.page_length - 5: html += self._generate_range_page(self.current_page-4, self.current_page) html += self.generate_current_page() html += self._generate_range_page(self.current_page+1, self.current_page+6) else: html += self._generate_range_page(self.page_length-9, self.current_page) html += self.generate_current_page() html += self._generate_range_page(self.current_page+1, self.page_length+1) return html + self.generate_next_page() def _generate_range_page(self, start, stop): '''生成所给范围的页''' html = '' for i in range(start, stop): url = self.pre_url + str(i) html += '<li><a href = "%s">%s</a></li>' % (url, i) return html def generate_current_page(self): return '<li class="%s"><a>%s</a></li>' %(self.current_page_css, self.current_page) def generate_pre_page(self): '''生成上一页''' if self.current_page == 1: return '' url = self.pre_url + str(self.current_page - 1) return '<li><a href = "%s">上一页</a></li>' % url def generate_next_page(self): '''生成下一页''' if self.current_page == self.page_length: return '' url = self.pre_url + str(self.current_page + 1) return '<li><a href = "%s">下一页</a></li>' % url
no copyright !! 个人原创博客欢迎转载,可以不保留出处。