Django 中的分页 (Pagination) 是如何实现的?

· 约 4 分钟读完 · 第 128 / 160 章

推荐答案

在 Django 中,分页功能可以通过 django.core.paginator 模块中的 Paginator 类来实现。以下是一个简单的示例:

在模板中,可以使用 page_obj 来显示分页内容:

本题详细解读

Paginator 类

Paginator 类是 Django 分页功能的核心。它接受一个对象列表和一个每页显示的对象数量作为参数。Paginator 类的主要方法包括:

  • get_page(page_number):返回指定页码的 Page 对象。如果页码无效,则返回第一页或最后一页。
  • page_range:返回一个包含所有页码的迭代器。
  • count:返回对象的总数。
  • num_pages:返回总页数。

Page 类

Page 类表示分页后的某一页。它包含以下常用属性和方法:

  • object_list:当前页的对象列表。
  • number:当前页码。
  • has_next():判断是否有下一页。
  • has_previous():判断是否有上一页。
  • next_page_number():返回下一页的页码。
  • previous_page_number():返回上一页的页码。

模板中的分页导航

在模板中,可以通过 page_obj 对象来生成分页导航。常见的分页导航包括:

  • 上一页和下一页链接。
  • 第一页和最后一页链接。
  • 当前页码和总页数显示。

通过结合 Paginator 和 Page 类,可以轻松地在 Django 中实现分页功能,并在模板中展示分页导航。