Python语言技术文档

微信小程序技术文档

php语言技术文档

jsp语言技术文档

asp语言技术文档

C#/.NET语言技术文档

html5/css技术文档

javascript

点击排行

您现在的位置:首页 > 技术文档 > Python网站web

Python Django 页面上展示固定的页码数实现代码

来源:中文源码网    浏览:191 次    日期:2024-05-09 00:09:30
【下载文档:  Python Django 页面上展示固定的页码数实现代码.txt 】


Python Django 页面上展示固定的页码数实现代码
如果页数太多的话,全部显示在页面上就会显得很冗杂
可以在页面中显示规定的页码数
例如:
book_list.html:




书籍列表













{% for book in books %}





{% endfor %}

序号id书名
{{ forloop.counter }}{{ book.id }}{{ book.title }}





views.py:
from django.shortcuts import render
from app01 import models
def book_list(request):
# 从 URL 中取参数
page_num = request.GET.get("page")
print(page_num, type(page_num))
page_num = int(page_num)
# 定义两个变量保存数据从哪儿取到哪儿
data_start = (page_num-1)*10
data_end = page_num*10
# 书籍总数
total_count = models.Book.objects.all().count()
# 每一页显示多少条数据
per_page = 10
# 总共需要多少页码来显示
total_page, m = divmod(total_count, per_page)
# 页面上最多展示的页码
max_page = 11
half_max_page = max_page // 2
# 页面上展示的页码的开始页
page_start = page_num - half_max_page
# 页面上展示的页码的结束页
page_end = page_num + half_max_page
# 如果当前页减一半比 1 小
if page_start <= 1:
page_start = 1
page_end = max_page
# 如果当前页加一半比总页码还大
if page_end > total_page:
page_end = total_page
page_start = total_page - max_page + 1
# 如果还有数据
if m:
total_page += 1
all_book = models.Book.objects.all()[data_start:data_end]
# 拼接 html 的分页代码
html_list = []
for i in range(page_start, page_end+1):
tmp = '
  • {0}
  • '.format(i)
    html_list.append(tmp)
    page_html = "".join(html_list)
    return render(request, "book_list.html", {"books": all_book, "page_html": page_html})
    运行结果:
    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持中文源码网。

    相关内容