Python Django封装分页成通用的模块详解

  

这篇文章主要介绍了Python Django封装分页成通用的模块详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

  

新建跑龙套文件夹,并创建page.py

  

 Python Django封装分页成通用的模块详解

  

page.py:

        类ShowPage(对象):   def __init__(自我、page_num total_count、url_prefix per_page=10, max_page=11):   '''   :param page_num:当前页码数   :param total_count:数据总数   :param url_prefix:标签href的前缀   :param per_page:每页展示的数据数   :param max_page:页面上最多显示的页码数   '''   自我。url_prefix=url_prefix   自我。max_page=max_page   #总共需要多少页码来显示   total_page m=divmod (total_count per_page)   #如果还有数据   如果m:   total_page +=1   自我。total_page=total_page   试一试:   page_num=int (page_num)   #如果输入的页码数超过了最大的页码数,默认返回最后一页   如果page_num比;self.total_page:   page_num=self.total_page   #如果输入的页码数小于1,则返回第一页   如果page_num & lt;1:   page_num=1   除了例外e:   #当输入的页码不是正经数字的时候默认返回第一页的数据   page_num=1   自我。page_num=page_num   #定义两个变量保存数据从哪儿取到哪儿   自我。data_start=(自我。page_num - 1) * 10   自我。data_end=自我。page_num * 10   #页面上总共展示多少页码   如果自我。total_page & lt;self.max_page:   自我。max_page=self.total_page   half_max_page=自我。max_page//2   #页面上展示的页码的开始页   page_start=自我。page_num——half_max_page   #页面上展示的页码的结束页   page_end=自我。page_num + half_max_page   #如果当前页减一半比1还小   如果page_start & lt;=1:   page_start=1   page_end=self.max_page   #如果当前页加一半比总页码还大   如果page_end祝辞=self.total_page:   page_end=self.total_page   page_start=自我。total_page——自我。max_page + 1   自我。page_start=page_start   自我。page_end=page_end   @ property   def开始(自我):   返回self.data_start   @ property   def结束(自我):   返回self.data_end   def page_html(自我):   #拼接html的分页代码   html_list=[]   #添加首页按钮   html_list.append (' & lt; li> & lt; a href=" https://www.yisu.com/zixun/{} ?页面=1”rel="外部nofollow”在首页& lt;/a> & lt;/li> '。格式(self.url_prefix))   #如果是第一页,就没有上一页   如果自我。page_num & lt;=1:   html_list.append (' & lt;李类=敖谩弊4? lt; a href=" https://www.yisu.com/zixun/" rel=巴獠縩ofollow”rel=巴獠縩ofollow”祝辞& lt;跨度aria-hidden=" true "祝辞« & lt;/span> & lt;/a> & lt;/li>“.format(自我。page_num - 1))   其他:   #加一个上一页的标签   html_list.append (' & lt; li> & lt; a href=" https://www.yisu.com/zixun/{} ?页面={}“rel="外部nofollow”rel="外部nofollow”rel="外部nofollow”祝辞& lt;跨越aria-hidden=" true "在« & lt;/span> & lt;/a> & lt;/li>“.format(自我。url_prefix, self.page_num-1))   #展示的页码   因为我在范围(自我。page_start,自我。page_end + 1):   #给当前页添加活跃   如果我==self.page_num:   tmp=' & lt;李类=盎钤尽弊4? lt; a href=" https://www.yisu.com/zixun/{0} ?页面={1}" rel="外部nofollow”rel="外部nofollow”在{1}& lt;/a> & lt;/li>“.format(自我。url_prefix,我)   其他:   tmp=' & lt; li> & lt; a href=" https://www.yisu.com/zixun/{0} ?页面={1}" rel="外部nofollow”rel="外部nofollow”在{1}& lt;/a> & lt;/li>“.format(自我。url_prefix,我)   html_list.append (tmp)   #如果是最后一页,就没有下一页   如果自我。page_num祝辞=self.total_page:   html_list.append (' & lt;李类=敖谩弊4? lt; a href=" https://www.yisu.com/zixun/" rel=巴獠縩ofollow”rel=巴獠縩ofollow”祝辞& lt;跨度aria-hidden=" true "祝辞» & lt;/span> & lt;/a> & lt;/li>”)   其他:   html_list.append (   “& lt; li> & lt; a href=" https://www.yisu.com/zixun/{} ?页面={}“rel="外部nofollow”rel="外部nofollow”rel="外部nofollow”祝辞& lt;跨越aria-hidden=" true "在» & lt;/span> & lt;/a> & lt;/li>“.format(自我。url_prefix,自我。page_num + 1)   #添加尾页按钮   html_list.append (' & lt; li> & lt; a href=" https://www.yisu.com/zixun/{} ?页面={}“rel="外部nofollow”rel="外部nofollow”rel="外部nofollow”在尾页& lt;/a> & lt;/li>“.format(自我。url_prefix, self.total_page))      . join (html_list page_html=" ") #拼接html的分页代码   返回page_html

Python Django封装分页成通用的模块详解