运用Paginator实现前端页面分页,测试

需求:将100条数目以及信息分页显示,实现每页显示5条

先常规配置 models.ps 创建表结构
在app中创建添加100条数据的视图函数
创建对应的子路由并与主路由建立连接

创建分页显示的视图函数

# 引入模块 views.py
from django.core.paginator import Paginator, EmptyPage
	def pag_test(request):
	book_obj_list = models.Book.objects.all()
	paginator = Paginator(book_obj_list, 5) # 每页显示五条数据
	# try不产生新的作用域
	try:
		# 1从前端获取页码
		current_num = int(request.GET.get('page',1)) # 默认第一页,以便第一次访问未获取页码用
		# 2根据页码获取具体的page对象,前端可遍历获取内容
		page_obj = paginator.page(current_num)
	except EmptyPage:
		# 当页码不符合try时,即超出范围后,默认第一页
		page_obj = paginator.page(1)
		current_num = 1
	# 开头几个判断及处理(报错)	
	start = current_num - 3
	if start < 1:
		start = 0
		end = 5
	# 末尾几个判断及处理(少显示)	
	elif start > paginator.num_page - 5:
		start = paginator.num_page - 5
		end = paginator.num_page
	# 一般情况	
	else:
		end = current_num + 2
		
	# 3获取页面	
	page_range = paginator.page_range[start:end]
	print(page_range)
	return reder(request, 'test.html', locals())

完善HTML页面建立连接
head引入
<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.1.0/css/bootstrap.css">
获取数据

<ul>
    {#遍历每页的内容#}
    {% for book_obj in page_obj %}
        <li>{{ book_obj.name }}-->>{{ book_obj.price }}</li>
    {% endfor %}

</ul>

在这里插入图片描述
个人根据实际美化修改

在这里插入图片描述
仅供参考使用,个人学习笔记,望给点学习建议

优化版本2.0

    paginator = Paginator(blog_obj_list, settings.EACH_PAGE_BLOGS_NUMBER)
    # 获取url的页面参数(GET请求)
    page_num = request.GET.get('page', 1)
    page_of_blogs = paginator.get_page(page_num)
    # 获取当前页码
    currentr_page_num = page_of_blogs.number
    # 获取当前页码前后各2页的页码范围
    """
    """
    page_range = list(range(max(currentr_page_num - 2, 1), currentr_page_num)) + \
                 list(range(currentr_page_num, min(currentr_page_num + 2, paginator.num_pages) + 1))
    # 加上省略页码标记
    if page_range[0] - 1 >= 2:
        page_range.insert(0, '...')
    if paginator.num_pages - page_range[-1] >= 2:
        page_range.append('...')
    # 加上首页和尾页
    if page_range[0] != 1:
        page_range.insert(0, 1)
    if page_range[-1] != paginator.num_pages:
        page_range.append(paginator.num_pages)
    

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值