万能分页模板

views视图

def student(request):

    # all_count 数据库总个数

        all_count = models.UserInfo.objects.all().count()

        #每页显示数据数

        page_info  = PageInfo(request.GET.get('page'),all_count,10,'student.html',11)   //'student.html  配置url

        user_list = models.UserInfo.objects.all()[page_info.start():page_info.end()]#传入数据

    return render(request,'student.html',{'user_list':user_list,'page_info':page_info})


关键模板来了:

class PageInfo(object):

def __init__(self,current_page,all_count,per_page,base_url,show_page=11):

#current_page当前页

        self.current_page = current_page

try:

self.current_page =int (current_page)

except Exception as e:

self.current_page =1

        #per_page 每页显示总个数

        self.per_page = per_page

a,b=divmod(all_count,per_page)

if b:

a=a+1

        self.all_pager = a

self.show_page = show_page

self.base_url = base_url

def start(self):

return (self.current_page -1)*self.per_page

def end(self):

return self.current_page *self.per_page

def pager(self):

page_list=[]

harf =int((self.show_page-1)/2)

#如果数据总页数 < 11

        if self.all_pager

begin =1

            stop =self.all_pager+1

            # 如果数据总页数 > 11

        else:

#如果当前页<=5,永远显示1-11页

            if self.current_page <= harf:

begin =1

                stop =self.show_page+1

                # 否则当前页>5,永远显示中间页

            else:

# 如果当前页+5大于所有数据页数,永远显示最后一页

                if self.current_page + harf>self.all_pager:

begin =self.all_pager -self.show_page+1

                    stop =self.all_pager +1

                else:

begin =self.current_page - harf

stop =self.current_page+harf+1

 if self.current_page <=1:

prev ="<li><a href='#'>上一页</a></li>"

  else:

prev ="<li><a href='%s?page=%s'>上一页</a></li>" %(self.base_url,self.current_page-1,)

page_list.append(prev)

        for iin range(begin,stop):

if i ==self.current_page:

temp ="<li class='active'><a href='/%s?page=%s'>%s</a></li>" %(self.base_url,i, i,)

else:

temp ="<li><a href='/%s?page=%s'>%s</a></li>" % (self.base_url, i, i,)

page_list.append(temp)

if self.current_page >=self.all_pager:

nex ="<li><a href='#'>下一页</a></li>"

else:

nex ="<li><a href='%s?page=%s'>下一页</a></li>" % (self.base_url,self.current_page +1,)

page_list.append(nex)

return ''.join(page_list)

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • django框架虽然带有自己的分页功能,但是样式不好看,为了做更好看的分页,需要自定义一个分页工具,话不多说撸起袖...
    Code人生阅读 4,357评论 0 1
  • Overview The ccxt library is a collection of available cr...
    郭蝈儿蝈儿阅读 9,254评论 0 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,810评论 19 139
  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 12,167评论 0 10
  • 2015年前我还是一个95kg的胖子,70后的我每次在单位体检时都会查出一大堆脂肪肝,高血脂症等与肥胖有关问题……...
    schumipaul阅读 3,382评论 1 1

友情链接更多精彩内容