#分页例子
from django.core.paginator import Paginator
def blog_list(request):
      blog_all_list = models.Blog.objects.all()
      paginator = Paginator(blog_all_list,1) #10个一页 进行分页
      page_num = request.GET.get('page', 1) #获取url页面参数 没有默认显示第一页
      page_of_blogs = paginator.get_page(page_num)

context = {}
      context['page_of_blogs'] = page_of_blogs #得到每页的数据
      context['blog_types'] = models.BlogType.objects.all()
      # context['blogs_count'] =models.Blog.objects.all().count()
      return render_to_response('blog_list.html', context)

#分页html代码
-- 分页页码样式和标签采用bootstrap的例子做的
-- 连接是https://v3.bootcss.com/components/#pagination
<nav aria-label="Page navigation">
    <ul class="pagination">
      <li>
        <!-- 上一页 -->
        {% if page_of_blogs.has_previous %} <!-- 是否有上一页 -->
           <a href="?page={{ page_of_blogs.previous_page_number }}" aria-label="Previous">
             <span aria-hidden="true">&laquo;</span>
          </a>
       {% else %}
          <!-- <span aria-hidden="true">&laquo;</span> -->
       {% endif %}
     </li>
        {% for page_num in page_of_blogs.paginator.page_range %}
           <li><a href="?page={{ page_num }}">{{ page_num }}</a></li>
        {% endfor %}
     <li>
       <!-- 下一页 -->
      {% if page_of_blogs.has_next %} <!-- 是否有下一页 -->
         <a href="?page={{ page_of_blogs.next_page_number }}" aria-label="Next">
         <span aria-hidden="true">&raquo;</span>
        </a>
      {% else %}
         <!-- <span aria-hidden="true">&raquo;</span> -->
      {% endif %}
     </li>
   </ul>
</nav>

#总结
向前段传递分页对象page_of_blogs
对象属性:

- page_of_blogs.num_pages                    总页数 (最后一页)
                 - page_of_blogs.has_previous                    是否有上一页
                 - page_of_blogs.previous_page_number   上一页页数
                 - page_of_blogs.has_next                           是否有下一页
                 - page_of_blogs.next_page_number          下一页页数

判断上一页下一页代码:
-- 是否有下一页如果有就输出上一页图标
{% if page_of_blogs.has_next %}
    <a href="?page={{ page_of_blogs.next_page_number }}" aria-label="Next">
          <span aria-hidden="true">&raquo;</span>
   </a>
{% else %}
-- 如果没有可以输出一个空或者输出一个没有a便签的图标
       <!-- <span aria-hidden="true">&raquo;</span> -->
{% endif %}

#完整代码  包括上一页 下一页 首页 尾页
<nav aria-label="Page navigation">
<ul class="pagination">
<li>
<!-- 上一页 -->
{% if page_of_blogs.has_previous %} <!-- 是否有上一页 -->
<a href="?page=1" aria-label="Previous">
<span aria-hidden="true">首页</span>
</a>
<a href="?page={{ page_of_blogs.previous_page_number }}" aria-label="Previous">
<!-- <span aria-hidden="true">&laquo;</span> -->
<span aria-hidden="true">上一页</span>
</a>
{% else %}
<!-- <a href="?page=1" aria-label="Previous">
<span aria-hidden="true">首页</span>
</a> -->
{% endif %}
</li>
{% for page_num in page_of_blogs.paginator.page_range %}
<li><a href="?page={{ page_num }}">{{ page_num }}</a></li>
{% endfor %}
<li>
<!-- 下一页 -->
{% if page_of_blogs.has_next %} <!-- 是否有下一页 -->
<a href="?page={{ page_of_blogs.next_page_number }}" aria-label="Next">
<!-- <span aria-hidden="true">&raquo;</span> -->
<span aria-hidden="true">下一页</span>
</a>
<a href="?page={{ page_of_blogs.paginator.num_pages }}" aria-label="Next">
<span aria-hidden="true">尾页</span>
</a>
{% else %}
<!-- <span aria-hidden="true">&raquo;</span> -->
<!-- <a href="?page={{ page_of_blogs.end_index }}" aria-label="Next">
<span aria-hidden="true">尾页</span>
</a> -->
{% endif %}
</li>
</ul>
</nav>

效果:

Django2.0 分页的应用的更多相关文章

  1. 《玩转Django2.0》读书笔记-Django建站基础

    <玩转Django2.0>读书笔记-Django建站基础 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.网站的定义及组成 网站(Website)是指在因特网上根据一 ...

  2. Python3.7+Django2.0.4配合Mongodb打造高性能高扩展标签云存储方案

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_141 书接上回,之前有一篇文章提到了标签云系统的构建:Python3.7+jieba(结巴分词)配合Wordcloud2.js来构 ...

  3. django2.0+linux服务器 ,如何让自己电脑访问

    这几天一直在搞这个服务器端口开放问题,来让自己电脑可以访问服务器下的django网页,今天终于弄好了~~~~~离成功又进了一步~~~~~ 1.首先,我们来开放一个linux服务器的端口(我开放了828 ...

  4. Django2.0中文文档

    title: Django2.0中文文档 tags: Python,Django,入沐三分 grammar_cjkRuby: true --- Django2.0版本已经发布了,我们先来看一个图片 从 ...

  5. python3下Django2.0配置最新xadmin详解

    1,打开pycharm,创建一个Django项目 2,安装Django,默认是最新版本,pip3 install -i https://pypi.douban.com/simple/ django 3 ...

  6. 【Python3.6+Django2.0+Xadmin2.0系列教程一】环境搭建及项目创建

    由于工作需要,接触了大半年时间的Django+xadmin框架,一直没空对这块对进行相关的梳理.最近在同事的怂恿下,就在这分享下笔者的学习及工作经验吧. 好了,话不多说,下面开始进入正题: 环境需求: ...

  7. Django:Python3.6.2+Django2.0配置MySQL

    持续学习Django中... Django默认使用的数据库是python自带的SQLlite3,但SQLlite并不适用于大型的项目,因此我将数据库换成了MySQL,下面介绍下Django如何配置数据 ...

  8. Django2.0版本 path与Django1.x版本url正则匹配问题

    Django1.x版本url正则匹配如下: Django2.0版本正则匹配则要导入re_path模块如下:

  9. Python 3之Django2部署(centos7+nginx+python3+django2.0)

    前置工具,系统为centos7.5,为了方便管理,可以安装宝塔免费版本 首先, yum install -y wget && wget -O install.sh http://dow ...

随机推荐

  1. 如何使能hyper-v的增强功能?

    1. 在hyper-v的设置中使能增强功能 2. 运行在hyper-v中的虚拟机(笔者使用ubuntu版本为bionic)中安装xrdp 2.1 获取安装脚本 $ git clone https:// ...

  2. HDCMS多图字段的使用?

    下面是HDCMS多图字段的简单使用: HDCMS在后台添加的多图,存到数据的时候是经过序列化过的,所以在使用的时候需要进行反序列化操作: $moreImg = M('keshi')->where ...

  3. 初始化html font-size

    (function () { var docEl = document.documentElement, resizeEvt = 'orientationchange' in window ? 'or ...

  4. dart里面的时间处理:

    原文地址:https://www.cnblogs.com/wyhlightstar/p/11059942.html 1.获取当前时间 var now = new DateTime.now(); pri ...

  5. docker安装并运行mysql

    docker拉取mysql镜像: [mall@VM_0_7_centos ~]$ sudo docker pull mysql:5.7 5.7: Pulling from library/mysql ...

  6. 中标麒麟QT5编译出现:cannot find -lGL 和 collect2:error:ld returned 1 exit status 错误

    sudo yum install mesa-libGL-devel mesa-libGLU-devel

  7. 【Linux】Gitlab库已损坏前端显示500错误解决方法

    背景: 在进行gitlab数据迁移之后,所有页面正常访问,唯独在访问项目repo地址时,报500错误 1 查看日志: 命令查看: gitlab-ctl tail 或者手动查看:/var/log/git ...

  8. python中的随机函数random的用法示例

    python中的随机函数random的用法示例 一.random模块简介 Python标准库中的random函数,可以生成随机浮点数.整数.字符串,甚至帮助你随机选择列表序列中的一个元素,打乱一组数据 ...

  9. Delphi 调用控件的过程,初学者都想知道

    假设有过程: procedure TForm1.Button1Click(Sender: TObject);begin    ShowMessage('唐细刚 2008');end; 想在 FormC ...

  10. 【VS开发】ClientToScreen 和ScreenToClient 用法

    ClientToScreen( )是把窗口坐标转换为屏幕坐标 pWnd->GetWindowRect(&rc);是获取整个窗体的大小pWnd->GetClientRect(& ...