django分页器的用法,django查询结果分页

  django分页器的用法,django查询结果分页

  分页自定义分页稳扎稳打版

  定义书(请求):

  # 从统一资源定位器取参数(访问的页码)

  页码=请求GET.get(page )

  尝试:

  # 将取出的页,面,张,版转换为(同国际组织)国际组织类型

  page_num=int(page_num)

  例外情况为e:

  # 当输入的页码不是正经数字的时候默认返回第一页的数据

  page_num=1

  # 数据库总数据是多少条

  总计数=型号Book.objects.all().计数()

  # 每一页显示多少条数据

  per_page=10

  # 总共需要多少页码来展示

  total_page,m=divmod(总计数,每页)

  如果男:

  total_page=1

  # 如果输入的页码数超过了最大的页码数,默认返回最后一页

  如果总页数:

  页码=总页数

  # 定义两个变量从哪里开始到哪里结束

  data_start=(page_num - 1) * 10

  数据结束=页数* 10

  # 页面上总共展示多少页码

  max_page=11

  如果总页数最大页数:

  最大页数=总页数

  # 把从统一资源定位器中获取的页码当做是显示页面的中间值,那么展示的便是当前页码的前五页和后后五页

  half_max_page=max_page //2

  # 根据展示的总页码算出页面上展示的页码从哪儿开始

  page _ start=page _ num-half _ max _ page

  # 根据展示的总页码算出页面上展示的页码到哪儿结束

  page_end=page_num half_max_page

  # 如果当前页减一半比一还小,不然页面上会显示负数的页码

  如果page_start=1:

  page_start=1

  page_end=max_page

  # 如果当前页加一半比总页码数还大,不然页面上会显示比总页码还大的多余页码

  如果page_end=total_page:

  page_end=total_page

  page _ start=total _ page-max _ page 1

  # 从数据库取值,并按照起始数据到结束数据展示

  所有模型.书。对象。all()[数据开始:数据结束]

  # 自己拼接分页的超文本标记语言代码

  html_str_list=[]

  # # 加上首页

  html_str_list.append(阿利href=/book/?page=1 首页/a/李)

  # 断一下如果是第一页,就没有上一页

  如果页面编号=1:

  html_str_list.append(阿利href= # span aria-hidden= true laquo。/span /a /li )

  否则:

  # 不是第一页,就加一个上一页的标签

  html_str_list.append(阿利href=/book/?page={ } span aria-hidden= true laquo;/span /a /li .格式(第一页)

  对于范围内的I(page _ start,page_end 1):

  # 如果是当前页就加一个活跃的样式类

  如果我==页码:

  tmp=阿利href=/book/?page={ 0 }"{ 0 }/a/Li .格式(一)

  否则:

  tmp=阿利href=/book/?page={ 0 }"{ 0 }/a/Li .格式(一)

  html_str_list.append(tmp)

  # 判断,如果是最后一页,就没有下一页

  如果页码=总页数:

  html_str_list.append(阿利href= # span aria-hidden= true raquo。/span /a /li )

  否则:

  # 不是最后一页,就加一个下一页标签

  html_str_list.append(阿利href=/book/?page={ } span aria-hidden= true raquo;/span /a /li .格式(第一页)

  # 加上尾页

  html_str_list.append(阿利href=/book/?page={} 尾页/a/李.格式(总页数))

  page_html=" " .join(html_str_list)

  返回渲染(请求、 book.html 、{all_book:all_book, page_html:page_html})稳扎稳打版

  !声明文档类型

  html lang=en

  头

  meta charset=UTF-8

  标题书籍列表/标题

  link rel=样式表 href=/static/bootstrap/CSS/bootstrap。量滴 CSS

  /头

  身体

  差异

  桌子

  四羟乙基己二酰胺

  tr

  泰国(泰国)序列号/th

  th ID值/th

  泰国(泰国)书名/th

  泰国(泰国)时间/th

  /tr

  {% for book in all_book %}

  tr

  td {{ forloop.counter }} /td

  td {{ book.id }} /td

  td {{ book.name }} /td

  td {{ book.date }} /td

  /tr

  {% endfor %}

  /thead

  /表格

  导航aria-label=页面导航

  保险商实验所

  {{ page_htmlsafe }}

  /ul

  /导航

  /div

  /body

  /html book.html

  封装保存版

  类页面(对象):

  def __init__(self,page_num,total_count,url_prefix,per_page=10,max_page=11):

  :参数页号:当前页码数

  :参数总计数:数据总数

  :参数url _前缀:a标签超链接的前缀

  :每页参数:每页显示多少条数据

  :param max_page:页面上最多显示几个页码

  self.url _前缀=url _前缀

  self.max_page=max_page

  # 总共需要多少页码来展示

  total_page,m=divmod(总计数,每页)

  如果男:

  total_page=1

  self.total_page=total_page

  尝试:

  # 将取出的页,面,张,版转换为(同国际组织)国际组织类型

  page_num=int(page_num)

  例外情况为e:

  # 当输入的页码不是正经数字的时候默认返回第一页的数据

  page_num=1

  # 如果输入的页码数超过了最大的页码数,默认返回最后一页

  如果总页数:

  页码=总页数

  self.page_num=page_num

  # 定义两个变量保存数据从哪儿取到哪儿

  自我。data _ start=(page _ num-1)* 10

  self.data_end=page_num * 10

  # 页面上总共展示多少页码

  如果total_page self.max_page:

  self.max_page=total_page

  half_max_page=self.max_page //2

  # 页面上展示的页码从哪儿开始

  page _ start=page _ num-half _ max _ page

  # 页面上展示的页码到哪儿结束

  page_end=page_num half_max_page

  # 如果当前页减一半比一还小,不然页面上会显示负数的页码

  如果page_start=1:

  page_start=1

  page_end=self.max_page

  # 如果当前页加一半比总页码数还大,不然页面上会显示比总页码还大的多余页码

  如果page_end=total_page:

  page_end=total_page

  page _ start=total _ page-self。最大_第1页

  self.page_start=page_start

  self.page_end=page_end

  @属性

  定义开始(自身):

  返回self.data _开始

  @属性

  定义结束(自身):

  返回self.data_end

  def page_html(自身):

  # 自己拼接分页的超文本标记语言代码

  html_str_list=[]

  # # 加上首页

  html_str_list.append(阿利href={}?page=1 首页/a/李.格式(self.url_prefix))

  # 断一下如果是第一页,就没有上一页

  如果self.page_num=1:

  html_str_list.append(阿利href= # span aria-hidden= true laquo。/span /a /li )

  否则:

  # 不是第一页,就加一个上一页的标签

  html_str_list.append(阿利href={}?page={ } span aria-hidden= true laquo;/span /a /li .格式(self.url_prefix,self.page_num - 1))

  对于范围内的我(自我。page _ start,self.page_end 1):

  # 如果是当前页就加一个活跃的样式类

  if i==self.page_num:

  tmp=阿利href=“{ 0 }?page={ 1 }"{ 1 }/a/Li .格式(self.url _前缀,我)

  否则:

  tmp=阿利href=“{ 0 }?page={ 1 }"{ 1 }/a/Li .格式(self.url _前缀,我)

  html_str_list.append(tmp)

  # 判断,如果是最后一页,就没有下一页

  如果self.page_num=self.total_page:

  html_str_list.append(阿利href= # span aria-hidden= true raquo。/span /a /li )

  否则:

  # 不是最后一页,就加一个下一页标签

  html_str_list.append(阿利href={}?page={ } span aria-hidden= true raquo;/span /a /li .格式(self.url_prefix,self.page_num 1))

  # 加上尾页

  html_str_list.append(阿利href={}?page={} 尾页/a/李.格式(self.url_prefix,self.total_page))

  page_html=" " .join(html_str_list)

  返回页面_html封装保存版

  定义发布者(请求):

  页码=请求GET.get(page )

  总计数=型号Publisher.objects.all().计数()

  # 调用封装的页类,传入相应的参数

  page_obj=Page(page_num,total_count,url_prefix=/publisher/,per_page=10,max_page=11)

  all_publisher=models .出版商。对象。all()[page _ obj。start:page _ obj。结束]

  page_html=page_obj.page_html()

  返回render(请求, publisher.html ,{publisher: all_publisher, page_html: page_html})封装版使用指南

  !声明文档类型

  html lang=en

  头

  meta charset=UTF-8

  标题图书列表/标题

  link rel=样式表 href=/static/bootstrap/CSS/bootstrap。量滴 CSS

  /头

  身体

  差异

  桌子

  四羟乙基己二酰胺

  tr

  任务描述序列号/td

  td ID值/td

  任务描述出版社/td

  任务描述时间/td

  /tr

  /thead

  在需要分行下载处加上

  {%用于发布者%}中的发布

  tr

  th {{ forloop.counter }} /th

  th {{ pub.id }} /th

  th {{ pub.name }} /th

  th {{ pub.date }} /th

  /tr

  {% endfor %}

  /tbody

  /表格

  导航aria-label=页面导航

  保险商实验所

  {{ page_htmlsafe }}

  /ul

  /导航

  /div

  /body

  /html封装版对应的超文本标记语言参考

  效果图如下:

  生活是一条无名的河,你必须或浅或深地穿过它;生活是一杯无色的茶,无论苦还是甜,你都应该喝下去;生活是一首无所畏惧的歌,你要唱高或低。

  转载请联系作者授权,否则将追究法律责任。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: