19:django 페이지

6879 단어 django
페이지 나누기는 사이트에서 비교적 흔히 볼 수 있는 응용이다.django는 페이지 나누기를 관리하는 데 도움을 주는 데이터를 제공했다. 이런 종류는 모두django에 위치한다.core.paginator.py 파일 안
페이지 클래스
구조 함수
class Paginator(object_list, per_page, orphans=0, allow_empty_first_page=True)
필수 매개변수:
object_list:count() 또는len__() 방법의 슬라이드 가능 대상, 예를 들어 목록, 모듈 또는djangoqueryset
per_페이지:페이지당 최대 항목 수
옵션 매개변수:
  • orphans:orphan은 고아라는 뜻입니다. 이 매개 변수는 마지막 페이지의 최소 항목 숫자가 얼마인지 가리키며 기본값은 0입니다.만일 orphans가 3이라면, 당신의 마지막 페이지에 두 개의 항목만 있다면, 이 두 항목은 앞 페이지로 나뉘어져 '고아' (마지막 너무 적은 항목) 가 형성되지 않을 것이다.
  • allow_empty_first_페이지: 첫 페이지가 비어 있는 것을 허용할지 여부(항목이 없음), 가짜라면 Objectlist가 비어 있을 때 EmptyPage 오류 던지기
  • 메서드
  • Paginator.페이지 (number): 페이지 대상을 되돌려줍니다. (1부터 계산) 인validPage 이상이 존재하지 않으면
  • 등록 정보
  • Paginator.count:object_list의 전체 항목 수
  • Paginator.num_페이지:총 페이지 수
  • Paginator.page_range: 페이지 범위는 1부터 계산한다. 예를 들어 [1,2,3,4]
  • InvalidPage 예외
    세 가지 이상이 있습니다. Invalid Page, Page NotAn Integer와 Empty Page입니다. 아래 코드를 보면 그들 사이의 관계를 알 수 있습니다.
    class InvalidPage(Exception):
    
        pass
    
    
    
    class PageNotAnInteger(InvalidPage):
    
        pass
    
    
    
    class EmptyPage(InvalidPage):
    
        pass

     
    클래스
    Paginator.페이지 () 함수는 class Page(object list,number,paginator)의 클래스 원형인 페이지 객체를 반환합니다.
    메서드
  • Page.has_next (): 다음 페이지가 있으면 진짜로 되돌려줍니다
  • Page.has_previous (): 이전 페이지가 있으면 진짜로 되돌려줍니다
  • Page.has_other_페이지(): 이전 페이지나 다음 페이지가 있으면 진짜로 되돌려줍니다
  • Page.next_page_number (): 다음 페이지의 페이지 번호를 되돌려줍니다. 다음 페이지가 있든 없든
  • Page.previous_page_number (): 이전 페이지의 번호를 되돌려줍니다. 이전 페이지가 존재하든 없든
  • Page.start_index (): 현재 페이지의 원소의 시작 번호, 예를 들어 다섯 개의 원소가 두 개의 원소가 한 페이지씩이면 모두 3페이지, 두 번째 페이지의startindex()는 3
  • Page.end_index (): 현재 페이지의 원소의 끝 번호, 예를 들어 다섯 개의 원소가 두 개의 원소가 한 페이지씩이면 모두 세 페이지, 두 번째 페이지의endindex()는 4
  • 등록 정보
  • Page.object_list: 이 페이지의 원소가 형성한 목록
  • Page.number: 현재 페이지의 페이지 번호
  • Page.Paginator: 연결된 Paginator 객체
  • 마지막으로 응용의 예를 살펴보자.
    보기 함수:
    from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
    
    
    
    def listing(request):
    
        contact_list = Contacts.objects.all()
    
        paginator = Paginator(contact_list, 25) # Show 25 contacts per page
    
    
    
        page = request.GET.get('page')
    
        try:
    
            contacts = paginator.page(page)
    
        except PageNotAnInteger:
    
            # If page is not an integer, deliver first page.
    
            contacts = paginator.page(1)
    
        except EmptyPage:
    
            # If page is out of range (e.g. 9999), deliver last page of results.
    
            contacts = paginator.page(paginator.num_pages)
    
    
    
        return render_to_response('list.html', {"contacts": contacts})

     
    거푸집
    {% for contact in contacts %}
    
        {# Each "contact" is a Contact model object. #}
    
        {{ contact.full_name|upper }}<br />
    
        ...
    
    {% endfor %}
    
    
    
    <div class="pagination">
    
        <span class="step-links">
    
            {% if contacts.has_previous %}
    
                <a href="?page={{ contacts.previous_page_number }}">previous</a>
    
            {% endif %}
    
    
    
            <span class="current">
    
                Page {{ contacts.number }} of {{ contacts.paginator.num_pages }}.
    
            </span>
    
    
    
            {% if contacts.has_next %}
    
                <a href="?page={{ contacts.next_page_number }}">next</a>
    
            {% endif %}
    
        </span>
    
    </div>

    좋은 웹페이지 즐겨찾기