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']
上面的示例分别进行了以下操作:
- 生成20条文章记录。
- 使用
Paginator
类对文章列表进行分页,每页数目为10。 - 获取第一页的文章记录列表。
- 使用
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']
上面的示例分别进行了以下操作:
- 生成20条文章记录。
- 使用
Paginator
类对文章列表进行分页,每页数目为10。 - 获取第9页的文章记录列表。
- 使用
page_range()
函数获取完整的页码列表。 - 使用
page_range()
函数获取包含3个页码的页码列表。