详解Django的 page_range() 函数:获取页码范围

  • Post category:Python

page_range()函数是Django框架中Paginator类中的一个函数,用于以指定的页面范围返回分页器对象的页码列表。

使用方法

函数定义

page_range(self, num_pages=None) -> List[Union[str, int]]

参数说明

  • num_pages: 指定页码列表包含的页码数量。如果为None,则返回完整的页码列表。默认为None。

返回值

返回指定范围内的页码列表,每个页码可以是数字或字符串。

示例说明

假设需要将文章列表页面分为每页10条数据,共有20条文章记录。以下是两个示例,分别演示了如何使用page_range()函数。

示例一:

from django.core.paginator import Paginator

article_list = [f'article{i}' for i in range(1, 21)]  # 生成20条文章记录

paginator = Paginator(article_list, 10)  # 对文章列表分页,每页数目为10
page_obj = paginator.get_page(1)  # 获取第一页的文章记录列表

page_range = page_obj.paginator.page_range(5)  # 获取页码列表,包含5个页码
print(list(page_range))  # ['1', '2', '3', '4', '5']

上面的示例分别进行了以下操作:

  1. 生成20条文章记录。
  2. 使用Paginator类对文章列表进行分页,每页数目为10。
  3. 获取第一页的文章记录列表。
  4. 使用page_range()函数获取包含5个页码的页码列表。

示例二:

from django.core.paginator import Paginator

article_list = [f'article{i}' for i in range(1, 21)]  # 生成20条文章记录

paginator = Paginator(article_list, 10)  # 对文章列表分页,每页数目为10
page_obj = paginator.get_page(9)  # 获取第9页的文章记录列表

page_range = page_obj.paginator.page_range()  # 获取完整的页码列表
print(list(page_range))  # ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']

page_range = page_obj.paginator.page_range(3)  # 获取页码列表,包含3个页码
print(list(page_range))  # ['7', '8', '9']

上面的示例分别进行了以下操作:

  1. 生成20条文章记录。
  2. 使用Paginator类对文章列表进行分页,每页数目为10。
  3. 获取第9页的文章记录列表。
  4. 使用page_range()函数获取完整的页码列表。
  5. 使用page_range()函数获取包含3个页码的页码列表。