Django分页(Pagination)

/ / 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请求获取页码,请使用:

无涯教程网

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 %}
                                

祝学习愉快! (发现内容有误?请选中要编辑的内容 -> 右键 -> 修改 -> 提交!帮助我们改进教程质量)

精选教程推荐

👇 以下精选教程可能对您有帮助,拓展您的技术视野

AI重塑测试开发系统实践 -〔陈磊〕

DeepSeek-R1与Deep Research复现之旅 -〔老刘〕

零基础入门Spark -〔吴磊〕

乔新亮的CTO成长复盘 -〔乔新亮〕

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

MySQL实战45讲 -〔林晓斌〕

深入拆解Java虚拟机 -〔郑雨迪〕

深入浅出gRPC -〔李林锋〕

推荐系统三十六式 -〔刑无刀〕

📝 好记忆不如烂笔头,留下您的学习笔记吧!

暂无学习笔记,成为第一个分享的人吧!

您的笔记将帮助成千上万的学习者