2017-04-06 4 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()メソッドによって予期しない例外が発生しました - Django Paginator

Page.previous_page_number()

前のページ番号を返します。前のページが存在しない場合はInvalidPageになります。

私はドキュメントが言うようにInvalidPage例外を発生させるprevious_page_number()を期待していました。なぜそれはEmptyPage例外を返すのですか?

何か不足していますか?

+0

あなたが使っているdjangoのバージョンは? –

+0

私はdjango 1.10を使用しています – Cody

+0

しかし、無効例外は本当に重要ですか?代わりにhas_previousを使用してprevious_page_numberの代わりに前のページを確認できますか? –

答えて

0

よるとページネータソース1.10で(django.core.paginator.py):あなたの状態を1として

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のドキュメントによれば、ベース例外が発生しているはずです InvalidPageprevious_page_number(のドキュメントを書きながら、これはタイプミスの間違いかもしれない

しかしInvalidPage説明に従って、EmptyPage例外は、この唯一の下に来ます。したがって、InvalidPageの詳細な/派生した例外はありません。

関連する問題