五.1分页--展示所有页码

Posted dbslinux

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了五.1分页--展示所有页码相关的知识,希望对你有一定的参考价值。

应该规定每页显示多少条数据,再拿总数据量除每页显示的数据条数就知道到底总共有多少页。

需要的变量:

  最多显示的页码数--max_show = 11  half_show = max_show // 2

  每页显示的数据条数--per_num = 10
  总数据量--all_count = len(users)   #计算users有多长即可
  总页码数---total_num, more = divmod(all_count, per_num) #总数据量除每页数据条数即可--用divmod方法,但注意此法返回的是一个元组,所以我接收两个参数

    total_num是整除的数,more是余数。
  存放li标签的列表--html_list = []
  切片的起始值--start = (current_page - 1) * per_num
  切片的终止值--end = current_page * per_num

1.显示所有页码数:

(1)views.py中:

from django.utils.safestring import mark_safe
users = [{‘name‘:‘zhihua{}‘.format(i),‘pwd‘:‘zh12345{}‘.format(i)} for i in range(1,302)]
def user_list(request):
per_num = 10 # 每页显示的数据条数
all_count = len(users)# 总数据量
total_num, more = divmod(all_count, per_num)# 总页码数
if more:#如果有余数就让总页码数加等1
total_num += 1
return render(request, ‘user_list.html‘,
{
"data": users,
‘total_num‘: range(1, total_num + 1)#把总页码数传给前端

}

(2)user_list.html中:

<nav aria-label="Page navigation">
<ul class="pagination">

{% for num in total_num %} #for循环总页码数生成多个<li>标签
<li><a href="/user_list/?page={{ num }}">{{ num }}</a></li>#这样地址栏中?page=后直接输入数字即可展示对应第几页
{% endfor %}
{{ html_str|safe }}

</ul>
</nav>

效果如下:

技术图片

以上是关于五.1分页--展示所有页码的主要内容,如果未能解决你的问题,请参考以下文章

手动封装分页组件(Vue3)

Django自定义分页器

技术点积累

分页查询

Java全栈web网页技术:16.书城项目实战五:图书的分页显示

Java全栈web网页技术:16.书城项目实战五:图书的分页显示