Django2.1의 페이지 나누기 기능 설명

4190 단어
django의 페이지 기능 클래스는 우리가 자주 사용하는 여러 가지 방법을 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.

    좋은 웹페이지 즐겨찾기