前言
在做网站的时候发现了一个好用的分页封装方式,记录下来,欢迎探讨
代码
封装前用函数进行页面编写和分页条件的判断
def pretty_list(req):
"""靓号列表"""
data_dict={
}
search_data=req.GET.get("q","") #有值拿值无值空字符串
#如果有搜索值
if search_data:
data_dict={
"mobile__contains":search_data}
# 根据用户想要访问的页码,计算出起始位置
page = int(req.GET.get("page", 1))
page_size = 10
start = (page - 1) * page_size
end = page * page_size
# 数据总条数
total_count = models.PrettyNum.objects.filter(**data_dict).order_by("-level").count()
# 一页数据条数
queryset=models.PrettyNum.objects.filter(**data_dict).order_by("-level")[start:end]
#总页码 divmod(99,9) (9,1)
total_page_count,div=divmod(total_count,page_size)
#如果有余数则总页码加一
if div:
total_page_count+=1
#计算出当前页面前五页或者后五页
plus=5
if total_page_count<2*plus+1:
#数据库中数据比较少,都没有达到11页
start_page=1
end_page =total_page_count
else:
# 数据库中数据超过11页
if page<= plus:
# 前面极值
start_page = 1
end_page =page+plus
else