django paginator实现分页

作者: 菩提老鹰 | 来源:发表于2017-11-09 11:04 被阅读53次

欢迎访问我的博客

Abstract

Django是一个由Python写成的开放源代码的Web应用框架。围绕Django也有很多现成的功能包。
这里介绍的paginator实现分页就是其中之一

实例测试

创建好应用(这里以blog应用为例)之后,在应用的view.py中添加如下:

from django.core.paginator import Paginator
from django.core.paginator import PageNotFound, EmptyPage

from .models import Post

这里我们需要在blog首页展示所有Post,然后实现分页。

def index(request):
    # 每页post数量
    limit = 5
    posts = Posts.objects.all()
    paginator = Paginator(posts, limit)
    page = request.GET.get('page')
    try:
        posts = paginator.page(page)
    except PageNotFound:
        posts = paginator.page(1)
    except EmptyPage:
        posts = paginator.page(paginator.num_pages)

    return render(request, 'blog/index.html', context={'posts': posts})

根据上面的代码,我们在blog/index.html中进行相关的配置操作

首先展示所有post,方法和一般的一样

{% for post in posts %}
    <h2>{{ post.title }}</h2>
    <hr>
    <p>{{ post.content }}</p>
{% endfor %}

接下来在展示post的区域的下方实现分页的具体展示。 官方给出的有两种基本的实现方式

方式一:

<nav style="text-align:center;">
    {% if posts.has_previous %}
    <a  href="?page={{ posts.previous_page_number }}">
        <span class="glyphicon glyphicon-menu-left"></span>
    </a>
    {% endif %}

    第 {{ posts.number }} 页/总 {{ posts.paginator.num_pages }} 页
    {% if posts.has_next %}
    <a  href="?page={{ posts.next_page_number }}">
        <span class="glyphicon glyphicon-menu-right"></span>
    </a>
    {% endif %}
</nav>

效果如下:

django paginator实现分页1

方式二(展示全部页码)

<nav style="text-align:center;">
    {% for page_number in posts.paginator.page_range %}
    {% ifequal page_number posts.number %}
        {{ page_number }}
    {% else %}
        <a  href="?page={{ page_number }}">{{ page_number }}</a>
    {% endifequal %}
    {% endfor %}
</nav>

效果如下:

django paginator实现分页2

参考

相关文章

  • 最浅显易懂的Django系列教程(33)-分页

    分页 在Django中实现分页功能非常简单。因为Django已经内置了两个处理分类的类。分别是Paginator和...

  • django paginator实现分页

    欢迎访问我的博客 Abstract Django是一个由Python写成的开放源代码的Web应用框架。围绕Djan...

  • Django--分页

    知识储备 Django提供了一些类实现管理数据分页,这些类位于django/core/paginator.py中。...

  • django 分页

    Django 中已经写好了分页实现的逻辑,我们在做分页的时候,仅需要通过俩个对象Paginator 和 Page ...

  • 分页

    分页 分页库Paginator的基本语法 django提供了分页的工具,存在于django.core中 Pagin...

  • 第20天,分页器

    本篇写了使用Django自有的分页器paginator的用法和自定制分页器 1.1 Django之分页功能 Dj...

  • django分页实现

    首先导入django自带的分页from django.core.paginator import Paginato...

  • Django常用-分页

    分页 Django提供了数据分页的类,这些类被定义在django/core/paginator.py中。 类Pag...

  • 2.8 django分页

    Paginator和Page类: Paginator和Page类都是用来做分页的。他们在Django中的路径为dj...

  • 分页器&批量插入数据&分页模板

    1. 分页器: 1.1 导入 ​ from django.core.paginator import Pagi...

网友评论

    本文标题:django paginator实现分页

    本文链接:https://www.haomeiwen.com/subject/kbdpmxtx.html