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 paginator实现分页

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