Paginator
- Django r7306
確認したファイル
- django/core/paginator.py
参考サイト
実際に試してみる
- QuerySetPaginatorを使ってみる
QuerySetPaginator(object_list, per_page, orphans=0, allow_empty_first_page=True)
object_list QuerySet per_page 1ページの表示件数 orphans=0 最小ページ数 allow_empty_first_page=True 空を許すか
- 必要そうなものを取得してみる。
参考にしたのは「django/views/generic/list_detail.py」
is_paginated ページがあるか? has_next 次のページがあるか? has_previous 前のページがあるか? page 現在のページ番号 next 次のページ番号 previous 前のページ番号 pages 全ページ数 hits 全object数
まず現在のページはデフォルトで「1」とする。 1ページ表示させる件数は「2」とする。 objectのカウント数は「5」とする。
# 1ページの表示件数 >>> per_page = 2 # 現在のページ数 >>> page = 1 # object_list >>> object_list = Spam.objects.filter(object_id=object_id) >>> print object_list.count() 5 >>> paginator = QuerySetPaginator(object_list, per_page, orphans=0, allow_empty_first_page=True) <django.core.paginator.QuerySetPaginator object at 0xb7190d8c>
is_paginated(ページがあるか?)
>>> page_number = 1 >>> page_obj = paginator.page(page_number) >>> print page_obj <Page 1 of 3> >>> is_paginated = page_obj.has_other_pages() >>> print is_paginated True
has_next(次のページがあるか?)
1ページ目の場合
>>> page_number = 1 >>> page_obj = paginator.page(page_number) >>> print page_obj <Page 1 of 3> >>> has_next = page_obj.has_next() >>> print has_next True
3ページ目の場合
>>> page_number = 3 >>> page_obj = paginator.page(page_number) >>> print page_obj <Page 3 of 3> >>> has_next = page_obj.has_next() >>> print has_next False
has_previous(前のページがあるか?)
1ページ目の場合
>>> page_number = 1 >>> page_obj = paginator.page(page_number) >>> print page_obj <Page 1 of 3> >>> has_previous = page_obj.has_previous() >>> print has_previous False
3ページ目の場合
>>> page_number = 3 >>> page_obj = paginator.page(page_number) >>> print page_obj <Page 1 of 3> >>> has_previous = page_obj.has_previous() >>> print has_previous True
page(現在のページ番号)
>>> page_number = 1 >>> page_obj = paginator.page(page_number) >>> print page_obj <Page 1 of 3> >>> page = page_obj.number >>> print page 1
next(次のページ番号)
>>> page_number = 1 >>> page_obj = paginator.page(page_number) >>> print page_obj <Page 1 of 3> >>> next = page_obj.next_page_number() >>> print next 2
previous(前のページ番号)
>>> page_number = 3 >>> page_obj = paginator.page(page_number) >>> print page_obj <Page 3 of 3> >>> previous = page_obj.previous_page_number() >>> print previous 2
pages(全ページ数)
>>> print paginator.num_pages 3
hits(全object数)
>>> print paginator.count 5
ほか
>>> print paginator.page_range [1, 2, 3]
>>> print page_obj.start_index() 1
>>> print page_obj.end_index() 2
