python django分页,多页面时始终展示10个页面(数字可更改)

效果如下:

后端views.py:

redisdata_list为数据列表

paginator = Paginator(redisdata_list, 10)    # 生成paginator对象,定义每页显示10条记录
page = request.GET.get('page', 1)    # 从前端获取当前的页码数,默认为1
currentPage = int(page)      # 把当前的页码数转换成整数类型

if currentPage - 5 < 1:
    pageRange = range(1,11)     # 定义页码范围
elif currentPage + 5 > paginator.num_pages:        # paginator.num_pages为总页数
    pageRange = range(currentPage-5,paginator.num_pages+1)
else:
    pageRange = range(currentPage-5,currentPage+5)

try:
    monitor_list = paginator.page(page)  # 获取当前页码的记录
except PageNotAnInteger:
    monitor_list = paginator.page(1)  # 如果用户输入的页码不是整数时,显示第1页的内容
except EmptyPage:
    monitor_list = paginator.page(paginator.num_pages)  # 如果用户输入的页数不在系统的页码列表中时,显示最后一页的内容

return render(request,'index.html',locals())

前端index.html:

{# 分页 #}
    {# 上一页按钮开始 #} {% if monitor_list.has_previous %} {# 如果当前页有上一页 #} {% endif %} {# 上一页按钮结束 #} {# 页码开始 #} {% for num in pageRange %} {% if num == currentPage %}
  • {{ num }}
  • {% else %}
  • {{ num }}
  • {% endif %} {% endfor %} {# 页码结束 #} {# 下一页按钮开始 #} {% if monitor_list.has_next %} {% endif %} {# 下一页按钮结束 #}

 

你可能感兴趣的:(python django分页,多页面时始终展示10个页面(数字可更改))