4-2, 페이지 나누기 기능

Django는 데이터 페이지의 클래스를 제공합니다. 이 클래스는django/core/paginator에 정의됩니다.py에 있습니다.클래스 Paginator는 열의 페이지 n개 데이터에 대한 페이지 나누기 연산에 사용됩니다.클래스 페이지는 m 페이지의 데이터를 나타내는 데 사용됩니다.
Paginator 클래스 인스턴스 객체
  • 방법init__(목록, int): 페이지의 대상을 되돌려줍니다. 첫 번째 파라미터는 목록 데이터이고 두 번째 파라미터는 페이지당 데이터의 갯수입니다.
  • 속성count: 대상의 총수를 되돌려줍니다.
  • 속성num페이지:전체 페이지 수를 반환합니다.
  • 속성 페이지range: 페이지 번호 목록을 되돌려줍니다. 1부터 시작합니다. 예를 들어 [1, 2, 3, 4].
  • 메서드 페이지(m): Page 클래스 인스턴스 객체를 반환하고 m 페이지의 데이터를 표시하며 아래 첨자가 1로 시작합니다.

  • Page 클래스 인스턴스 객체
  • Paginator 객체의 페이지() 메서드를 호출하여 Page 객체를 반환합니다. 수동으로 구성할 필요가 없습니다.
  • 속성 Objectlist: 현재 페이지의 대상 목록을 되돌려줍니다.
  • 속성number: 현재 몇 페이지인지 되돌려줍니다. 1부터 시작합니다.
  • 속성paginator: 현재 페이지에 해당하는 Paginator 객체입니다.
  • 방법hasnext (): 다음 페이지에서 True를 되돌려줍니다.
  • 방법hasprevious (): 이전 페이지에서 True를 반환한 경우
  • 방법len(): 현재 페이지의 대상 개수를 되돌려줍니다.예:
  • 가져온 Contacts 모델 클래스가 있다고 가정합니다.뷰 함수는 다음과 같이 나타납니다.
    from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
    
    def listing(request):
        contact_list = Contacts.objects.all()
        paginator = Paginator(contact_list, 25) # 25 
    
        page = request.GET.get('page')
        try:
            contacts = paginator.page(page)
        except PageNotAnInteger:
            contacts = paginator.page(1)
        except EmptyPage:
            contacts = paginator.page(paginator.num_pages)
    
        return render_to_response('list.html', {"contacts": contacts})
    

    대응하는list에 있습니다.html 템플릿에서 우리는 페이지 사이의 내비게이션과 대상 자체로부터 오는 모든 재미있는 정보를 포함할 수 있다.
    <div class="pagination">
        <span class="step-links">
            
            <span class="current">
                Page  of .
            </span>
           
        </span>
    </div>
    

    좋은 웹페이지 즐겨찾기