Django - 分页(Pagination)

Django - 分页(Pagination) 首页 / Django入门教程 / Django - 分页(Pagination)
django pagination

Pagination 分页使无涯教程可以在多个页面上分发可迭代的内容。 然后,可以使用上一页下一页按钮的页码导航到这些页面。

分页器类和页面对象

Django提供了一个 Paginator 类,该类具有以下属性:

  • page(page_number)            -  返回具有给定page_number的page_object
  • has_previous                          -   是否有上一页,返回True/False
  • has_next                                   -   是否有下一页,返回true/False
  • previous_page_number     -  返回上一页码
  • next_page_number              -   返回下一页号
  • number                                      -  返回当前页码
  • paginator.num_pages         -  返回总页码

首先,导入 Paginator 类。

from django.core.paginator import Paginator

现在,选择每页的对象数。

p = Paginator(queryset, number_of_objects_per_page)

然后,使用 page()函数制作页面对象。

page_object = p.page(page_number)

为了从URL请求获取页码,请使用:

链接:https://www.learnfk.comhttps://www.learnfk.com/django/django-pagination.html

来源:LearnFk无涯教程网

page_object = p.page(request.GET.get('page'))

最后,返回 page_object 作为上下文变量。 views.py下的组合代码如下所示:

    from django.core.paginator import Paginator
    def my_view_function(request):
        queryset = ['A', 'B', 'C', 'D', 'E']        # sample data
        p = Paginator(queryset, 1)                  # for 1 object per page
        try:
            page_number = request.GET.get('page')
            page_object = p.page(page_number)
        except:
            page_object = p.page(1)                 # load first page by default
        return render(request, 'my_template.html', {'page_object':page_object})
                                

在模板中添加分页

要从 Paginator page_object 应用页面效果,请参考以下代码:

        {% for i in page_pbject %}
            {{i}}
        {% endfor %}}
        
        {% if page_object.has_previous %}
            href="?page={{ page_object.previous_page_number }}"
        {% endif %}
        Page {{ page_object.number }} of {{ page_object.paginator.num_pages }}
        {% if page_object.has_next %}
            href="?page={{ page_object.next_page_number }}"
        {% endif %}
                                

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

深入浅出区块链 -〔陈浩〕

TensorFlow快速入门与实战 -〔彭靖田〕

面试现场 -〔白海飞〕

深入浅出计算机组成原理 -〔徐文浩〕

TypeScript开发实战 -〔梁宵〕

全栈工程师修炼指南 -〔熊燚(四火)〕

大厂晋升指南 -〔李运华〕

MySQL 必知必会 -〔朱晓峰〕

中间件核心技术与实战 -〔丁威〕

好记忆不如烂笔头。留下您的足迹吧 :)