2017-04-06 9 views
0
>>> objects = ['john', 'paul', 'george', 'ringo'] 
>>> p = Paginator(objects, 2) 
>>> p.count 
4 
>>> p.num_pages 
2 
>>> page1 = p.page(1) 
>>> 
>>> page1.previous_page_number() 
Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
    File "C:\Users\Rick\ws2\env\lib\site-packages\django\core\paginator.py", line 136 
, in previous_page_number 
    return self.paginator.validate_number(self.number - 1) 
    File "C:\Users\Rick\ws2\env\lib\site-packages\django\core\paginator.py", line 38, 
in validate_number 
    raise EmptyPage('That page number is less than 1') 
django.core.paginator.EmptyPage: That page number is less than 1 
>>> 

previous_page_number() 설명서에 따라. 예기치 않은 예외가 previous_page_number() 메서드에 의해 발생했습니다 - 장고 Paginator

Page.previous_page_number()

이전 페이지 수를 돌려줍니다. 이전 페이지가없는 경우 InvalidPage을 발생시킵니다.

previous_page_number()InvalidPage 예외를 제기 할 것으로 예상되어 설명서에 나와 있습니다. 왜 EmptyPage 예외를 반환합니까?

나는 무엇이 있습니까?

+0

어떤 django 버전을 사용하고 있습니까? –

+0

django 1.10을 사용하고 있습니다. – Cody

+0

하지만 무효 예외는 정말로 중요합니까? 대신 이전 페이지 대신 이전 페이지를 확인하기 위해 has_previous를 사용할 수 있습니까? –

답변

0

따르면 매기기 소스 1.10 (django.core.paginator.py) : 당신의 상태에 따라로서

def validate_number(self, number): 
    """ 
    Validates the given 1-based page number. 
    """ 
    try: 
     number = int(number) 
    except (TypeError, ValueError): 
     raise PageNotAnInteger('That page number is not an integer') 
    if number < 1: 
     raise EmptyPage('That page number is less than 1') 
    if number > self.num_pages: 
     if number == 1 and self.allow_empty_first_page: 
      pass 
     else: 
      raise EmptyPage('That page contains no results') 
    return number 

: 숫자는 올릴 것이다 너무 미만 1이됩니다

EmptyPage('That page number is less than 1')

그러나 Django 문서에 따르면 기본 예외를 발생시켜야합니다. InvalidPage! previous_page_number()

에 대한 문서를 작성하지만 InvalidPage 설명에 따라, EmptyPage 예외가이 단지에서 오는 동안

이것은 오타 실수가 될 수 있습니다. 따라서 InvalidPage에 대한 자세한/파생 된 예외는 없습니다.