香港云主机最佳企业级服务商!

ADSL拨号VPS包含了中国大陆(联通,移动,电信,)

中国香港,国外拨号VPS。

当前位置:云主机 > python >

电信ADSL拨号VPS
联通ADSL拨号VPS
移动ADSL拨号VPS

Django框架实现分页显示内容的方法详解


时间:2022-04-02 10:35 作者:admin


本文实例讲述了Django框架实现分页显示内容的方法。分享给大家供大家参考,具体如下:

分页

1、作用

数据加载优化

2、前端引入bootstrap样式:

{# 引入bootstrap样式的cdn资源 #}<link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="external nofollow" rel="stylesheet">

引入分页器:

<div id="rootbox">  <h1>文章列表</h1>  <ul id="bloglist">    {# 遍历博文 #}    {% for blog in page.object_list %}      {# 显示博文标题 #}      <li>        <a href="{% url 'app:readblog' blog.id %}" rel="external nofollow" ><h3>{{ blog.title }}</h3></a>      </li>    {% endfor %}  </ul>  {#分页器:html内容拷贝于bootstrap网站-组件-分页#}  {# bootstrap是一整套成熟经典的页面组件框架 #}  <nav aria-label="Page navigation">    <ul class="pagination">      {# 上一页按钮 #}      {# 如果有上一页 #}      {% if page.has_previous %}        <li>          {# 点击超链接,对上一页的页面发起访问 #}          <a href="{% url 'app:blogs' page.previous_page_number %}" rel="external nofollow" aria-label="Previous">            <span aria-hidden="true">&laquo;</span>          </a>        </li>      {# 如果没有上一页 #}      {% else %}        {# 当没有上一页时,阅读bootrap文档得知,对当前li使用disabled样式 #}        <li class="disabled">          {# href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ,处于禁用状态的按钮被点击时直接跳转本页 #}          <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" aria-label="Previous">            <span aria-hidden="true">&laquo;</span>          </a>        </li>      {% endif %}      {# 页码按钮 #}      {# 遍历传入的页码范围 #}      {% for p in pagerange %}        {# 如果页码=当前页页码 #}        {% ifequal p currentpage %}          {# 被选中的页码具有高亮效果,阅读bootrap文档得知,对当前li使用active样式 #}          {# {% url 'app:blogs' p %} 点击页码,对第p页的路由发起访问 #}          <li class="active"><a href="{% url 'app:blogs' p %}" rel="external nofollow" rel="external nofollow" >{{ p }}</a></li>        {% else %}          {# 非当前页页码普通显示 #}          <li><a href="{% url 'app:blogs' p %}" rel="external nofollow" rel="external nofollow" >{{ p }}</a></li>        {% endifequal %}      {% endfor %}      {# 下一页按钮 #}      {% if page.has_next %}        <li>          {# 点击超链接,对下一页的页面发起访问 #}          <a href="{% url 'app:blogs' page.next_page_number %}" rel="external nofollow" aria-label="Next">            <span aria-hidden="true">&raquo;</span>          </a></li>      {% else %}        {# 当没有下一页时,阅读bootrap文档得知,对当前li使用disabled样式 #}        <li class="disabled">          {# href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ,处于禁用状态的按钮被点击时直接跳转本页 #}          <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" aria-label="Next">            <span aria-hidden="true">&raquo;</span>          </a></li>      {% endif %}    </ul>  </nav></div>

3、Paginator

数据分页工具 对象创建 Paginator(数据集,每一页数据数) 属性 count:对象总数 page_range:页码列表,从1开始 num_pages:页面总数 方法 page(整数): 获得一个page对象 常见错误 InvalidPage:page()传递无效页码 PageNotAnInteger:page()传递的不是整数 Empty:page()传递的值有效,但是没有数据

4、Page

具体的某一页面 对象获得,通过Paginator的page()方法获得 属性 object_list:当前页面上所有的数据对象 number:当前页的页码值 paginator: 当前page关联的Paginator对象 方法 has_next():判断是否有下一页 has_previous():判断是否有上一页 has_other_pages():判断是否有上一页或下一页 next_page_number():返回下一页的页码 previous_page_number():返回上一页的页码 len():返回当前页的数据的个数
# 显示博文列表# pagenum=路由参数=用户想要查看第几页def showBlogs(request, pagenum):  # 查询数据库获取所有博文  blogs = Blog.objects.all()  # 构建分页器对象,blogs=所有博文,2=每页显示的个数  paginator = Paginator(blogs, 2)  # 获取第n页的页面对象  page = paginator.page(pagenum)  # Paginator和Page的常用API  # page.previous_page_number()  # page.next_page_number()  # page.has_previous()  # page.has_next()  # 构造页面渲染的数据  '''  渲染需要的数据:  - 当前页的博文对象列表  - 分页页码范围  - 当前页的页码  '''  data = {    # 当前页的博文对象列表    'page': page,    # 分页页码范围    'pagerange': paginator.page_range,    # 当前页的页码    'currentpage': page.number,  }  # 将数据丢给页面渲染  return render(request, 'blogs.html', context=data)

希望本文所述对大家基于Django框架的python/' target='_blank'>python程序设计有所帮助。

(责任编辑:admin)






帮助中心
会员注册
找回密码
新闻中心
快捷通道
域名登录面板
虚机登录面板
云主机登录面板
关于我们
关于我们
联系我们
联系方式

售前咨询:17830004266(重庆移动)

企业QQ:383546523

《中华人民共和国工业和信息化部》 编号:ICP备00012341号

Copyright © 2002 -2018 香港云主机 版权所有
声明:香港云主机品牌标志、品牌吉祥物均已注册商标,版权所有,窃用必究

云官方微信

在线客服

  • 企业QQ: 点击这里给我发消息
  • 技术支持:383546523

  • 公司总台电话:17830004266(重庆移动)
  • 售前咨询热线:17830004266(重庆移动)