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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。