首页 > 代码库 > django的分页--不全也未实现

django的分页--不全也未实现

一、Django内置分页

Paginator

 

二、自定义分页

分页功能在每个网站都是必要的,对于分页来说,其实就是根据用户的输入计算出应该在数据库表中的起始位置。

1、设定每页显示数据条数

2、用户输入页码(第一页、第二页...)

3、根据设定的每页显示条数和当前页码,计算出需要取数据表的起始位置

4、在数据表中根据起始位置取值,页面上输出数据


需求又来了,需要在页面上显示分页的页面。如:[上一页][1][2][3][4][5][下一页]

1、设定每页显示数据条数

2、用户输入页码(第一页、第二页...)

3、设定显示多少页号

4、获取当前数据总条数

5、根据设定显示多少页号和数据总条数计算出,总页数

6、根据设定的每页显示条数和当前页码,计算出需要取数据表的起始位置

7、在数据表中根据起始位置取值,页面上输出数据

8、输出分页html,如:[上一页][1][2][3][4][5][下一页]

技术分享
#!/usr/bin/env python# _*_coding:utf-8_*_from django.utils.safestring import mark_safe class PageInfo(object):    def __init__(self,current,totalItem,peritems=5):        self.__current=current        self.__peritems=peritems        self.__totalItem=totalItem    def From(self):        return (self.__current-1)*self.__peritems    def To(self):        return self.__current*self.__peritems    def TotalPage(self):  #总页数        result=divmod(self.__totalItem,self.__peritems)        if result[1]==0:            return result[0]        else:            return result[0]+1 def Custompager(baseurl,currentPage,totalpage):  #基础页,当前页,总页数    perPager=11    #总页数<11    #0 -- totalpage    #总页数>11        #当前页大于5 currentPage-5 -- currentPage+5            #currentPage+5是否超过总页数,超过总页数,end就是总页数        #当前页小于5 0 -- 11    begin=0    end=0    if totalpage <= 11:        begin=0        end=totalpage    else:        if currentPage>5:            begin=currentPage-5            end=currentPage+5            if end > totalpage:                end=totalpage        else:            begin=0            end=11    pager_list=[]    if currentPage<=1:        first="<a href=http://www.mamicode.com/‘‘>首页"    else:        first="<a href=http://www.mamicode.com/‘%s%d‘>首页" % (baseurl,1)    pager_list.append(first)     if currentPage<=1:        prev="<a href=http://www.mamicode.com/‘‘>上一页"    else:        prev="<a href=http://www.mamicode.com/‘%s%d‘>上一页" % (baseurl,currentPage-1)    pager_list.append(prev)     for i in range(begin+1,end+1):        if i == currentPage:            temp="<a href=http://www.mamicode.com/‘%s%d‘ class=‘selected‘>%d" % (baseurl,i,i)        else:            temp="<a href=http://www.mamicode.com/‘%s%d‘>%d" % (baseurl,i,i)        pager_list.append(temp)    if currentPage>=totalpage:        next="<a href=http://www.mamicode.com/‘#‘>下一页"    else:        next="<a href=http://www.mamicode.com/‘%s%d‘>下一页" % (baseurl,currentPage+1)    pager_list.append(next)    if currentPage>=totalpage:        last="<a href=http://www.mamicode.com/‘‘>末页"    else:        last="<a href=http://www.mamicode.com/‘%s%d‘>末页" % (baseurl,totalpage)    pager_list.append(last)    result=‘‘.join(pager_list)    return mark_safe(result)   #把字符串转成html语言
分页实例

总结,分页时需要做三件事:

  • 创建处理分页数据的类
  • 根据分页数据获取数据
  • 输出分页HTML,即:[上一页][1][2][3][4][5][下一页]

django的分页--不全也未实现