博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django自定义分页器
阅读量:4583 次
发布时间:2019-06-09

本文共 2869 字,大约阅读时间需要 9 分钟。

page.py

def __init__(self,current_page_num,all_count,per_age_num=2,pager_count=11)'''current_page:当前页;all_count:数据库中的数据总条数;per_page_num:每页显示的数据条数;pager_count:最多显示的页码个数        try:            current_page_num=int(current_page_num)        except Exception as e:            current_page_num = 1        if current_page_num<1:            current_page_num =1        self.current_page_num = current_page_num        self.all_count = all_count        self.per_page_num = per_page_num#总页码        all_pager,tmp = divmod(all_count,per_page_num)        if tmp:                all_pager +=1        self.all_pager = all_pager        self.pager_count = pager_count        self.pager_count_half = int((pager_count -1)/2)    @property    def start(self):        return(self.current_page_num -1)*self.per_page_num    @property    def end(self):         return(self.current_page_num)*self.per_page_num    def page_html(self):        #如果总页码<11:        if self.all_page<=self.pager_count:            pager_start = 1            pager_end = self.all_pager +1        #总页码>11:        else:            #当前页如果<=页面上最多显示11/2个页码            if  self.current_page_num <= self.pager_count_half:                pager_start =1                pager_end = self.pager_count+1            #当前页>5:            else:                #页码翻到最后                if (self.current_page_num +self.pager_count_half)>self.all_pager:                    pager_start = self.all_pager - self.pager_count +1                    pager_end = self.all_pager +1                else:                     pager_start = self.current_pager_num -self.pager_count_half                     pager_end = self.current_page_num + self.pager_count_half+1  page_html_list =[]  first_page = '
  • 首页
  • '%(1)  page_html_list.append(first_page)  if self.current_page_num <=1:    prev_page = '
  • 上一页
  • '  else:    prev_page = '
  • 上一页
  • '%(self.current_page_num-1)  page_html_list.append(prev_page)  for i in range(pager_start,paper_end):    if i == self.current_page_num:      temp = '
  • %s
  • '%(i,i)    else:      temp='
  • %s
  • '%(i,i)    page_html_list.append(temp)  if self.current_page_num >= self.all_pager:    next_page = '
  • 下一页
  • '  else:    next_page = '
  • 下一页
  • ' % (self.current_page_num + 1,)  page_html_list.append(next_page)  last_page = '
  • 尾页
  • ' % (self.all_pager,)  page_html_list.append(last_page)  return ''.join(page_html_list)

     views.py

    from myapp.page import Paginationcurrent_page_num = request.GET.get("page")book_list = Book.objects.all()pagination=Pagination(current_page_num,book_list.count())book_list=book_list[pagination.start:pagination.end]return render(request,"index.html",locals())

     index.html

      {% for book in book_list %}
    • {
      { book.title }}----{
      { book.price }}
    • {% endfor %}

      

    转载于:https://www.cnblogs.com/liuqingyang/p/9925401.html

    你可能感兴趣的文章
    chr()//ord() //进制转换函数//eval()//文件函数//split()
    查看>>
    第一章 Java程序设计概述
    查看>>
    定时调动 (项目保留备份代码码)
    查看>>
    Leetcode-Divide Two Integers
    查看>>
    HTML 首页倒三角形导航块
    查看>>
    每天一道Java题[9]
    查看>>
    结对编程2——单元测试
    查看>>
    python 函数/列表的应用
    查看>>
    C#与MES
    查看>>
    LR接口测试---Java Vuser之jdbc查询(调试前)
    查看>>
    SQL Server 各版本安装包分享
    查看>>
    .net项目移植后的虚拟目录的配置问题
    查看>>
    JSP页面中引入另一个JSP页面
    查看>>
    Android笔记——活动的生命周期
    查看>>
    springmvc使用包装的pojo接收商品信息的查询条件
    查看>>
    【Linux】【Services】【Configuration】puppet
    查看>>
    poj 1002:487-3279(水题,提高题 / hash)
    查看>>
    RAC环境上搭建DG
    查看>>
    OS X Mountain Lion高手进阶
    查看>>
    精通CSS:高级Web标准解决方案(第2版)(Amazon第一CSS畅销书全新改版)
    查看>>