Django2.1의 페이지 나누기 기능 설명
Paginator
클래스에 봉하여 이러한 방법에 따라 우리는 우리의 페이지 기능을 깊이 있게 맞춤형으로 만들 수 있다.먼저 [
Paginator
]류의 구조 방법을 살펴보자.class Paginator(object_list, per_page, orphans=0, allow_empty_first_page=True)
필수 매개변수:
objects_list
: 목록/원조 또는 Django
에서 생성된 QuerySet
대상이거나 count()
또는 __len __()
방법이 있는 다른 절단 가능한 대상이어야 한다.per_page
: 페이지당 몇 개의 수량을 표시하는 정수orphans
: 기본값이 0이고 마지막 페이지에 몇 개의 데이터가 남아 있든지 상관없이 다른 페이지를 만든다. 그렇지 않으면 남은 것을 이전 페이지로 통합한다. 예를 들어 현재 페이지가 모두 11
페이지이고 11
페이지에 두 개의 데이터만 남아 있다면 우리가 정의orphans=2
하면 전체 페이지10
페이지가 남고 마지막 두 페이지가 10
페이지로 통합된다.allow_empty_first_page
: 첫 페이지가 비어 있는 것을 허용할지 여부.False
가 비어 있으면 object_list
오류가 발생합니다. 기본값은 EmptyPage
입니다.버전 2.0 이후 추가된 Paginator 방법:
True
방법: 현재 페이지 번호를 되돌려주고 페이지 범위를 초과하고 무효한 페이지 번호를 처리하는 상황이 있다. 페이지 번호는 숫자가 아니라 첫 페이지로 되돌려주고 마지막 페이지를 초과한다.Paginator.get_page(number)
방법: 지정된 페이지 번호의 내용을 되돌려주고 주어진 페이지 번호가 존재하지 않으면 InvalidPage를 일으킨다.속성:
Paginator.page(number)
: 모든 페이지의 총 객체 수입니다.Paginator.count
: 전체 페이지 수Paginator.num_pages
: 페이지 번호를 교체하면 [1,2,3,4,...]이런 리스트.위의 내용을 살펴본 후 Page 객체에서 제공하는 방법을 템플릿에서 직접 사용할 수 있습니다!
Page objects 객체의 방법 및 속성:
Paginator.page_range
다음 페이지가 돌아오면Page.has_next()
.True
이전 페이지가 되돌아온다면Page.has_previous()
.True
위아래 페이지가 모두 반환된 경우Page.has_other_pages()
.True
다음 페이지의 번호를 되돌려줍니다.Page.next_page_number()
이전 페이지의 번호를 되돌려줍니다.Page.previous_page_number()
현재 페이지의 첫 번째 데이터를 반환합니다.Page.start_index()
현재 페이지의 마지막 데이터 반환Page.end_index()
페이지의 객체 목록입니다.Page.object_list
이 페이지의 1 기반 페이지 번호입니다.Page.number
와 연관된 Paginator 객체케이스 상세 정보:
# views.py
from django.core.paginator import Paginator
def list(request):
LIST = []
for i in range(1,102):
LIST.append(i)
paginator = Paginator(LIST, 10, orphans=2, )
pages = paginator.page_range #
pages_num = paginator.num_pages #
gd_page = paginator.page(5) #
page = request.GET.get('page') #
contacts = paginator.get_page(page) # , ,
return render(request, 'notes/list.html',{'contacts':contacts, 'pages':pages, 'pagenums':pages_num, 'gd_page':gd_page})
# list.html
{% for contact in contacts %}
{{ contact|upper }}
{% endfor %}
{% if contacts.has_previous %}
:{{ contacts.previous_page_number }}
이전 페이지
{% endif %}
:{{ contacts.number }}
{% if contacts.has_next %}
:{{ contacts.next_page_number }}
다음 페이지
{% endif %}
{{ contacts.start_index }}
{{ contacts.end_index }}
:
{% for page in pages %}
{% if page == contacts.number %}
{{ page }}
{% else %}
{{ page }}
{% endif %}
{% endfor %}
:{{ pagenums }}
{% for gd in gd_page %}
{{ gd }}
{% endfor %}
:{{ gd_page }}
창작이 쉽지 않습니다. 저는 Django에 관한 지식을 계속 공유할 것입니다. 관심이 있는 분들은 본인의 위챗 공식 계정: 행복의 관문에서 만약에 괜찮다고 생각하신다면 아래의 작은 편집자를 추천합니다. 작은 편집자는 Django에 관한 지식을 더 많이 공유할 수 있습니다. 큰 집에서 작은 편집자를 추가하여 위챗으로 Django 지식을 교류하는 것을 환영합니다. 비고 Django, 작은 편집자 위챗: xingfuguanzhong.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.