Loading AUTHORS +1 −0 Original line number Diff line number Diff line Loading @@ -600,6 +600,7 @@ answer newbie questions, and generally made Django that much better: Richard Davies <richard.davies@elastichosts.com> Richard House <Richard.House@i-logue.com> Rick Wagner <rwagner@physics.ucsd.edu> Rigel Di Scala <rigel.discala@propylon.com> Robert Coup Robert Myers <myer0052@gmail.com> Roberto Aguilar <roberto@baremetal.io> Loading django/core/paginator.py +1 −1 Original line number Diff line number Diff line Loading @@ -96,7 +96,7 @@ class Paginator(object): Returns a 1-based range of pages for iterating through within a template for loop. """ return list(six.moves.range(1, self.num_pages + 1)) return six.moves.range(1, self.num_pages + 1) page_range = property(_get_page_range) Loading docs/releases/1.9.txt +13 −0 Original line number Diff line number Diff line Loading @@ -770,6 +770,19 @@ To fix your ``simple_tag``\s, it is best to apply the following practices: Tags that follow these rules will be correct and safe whether they are run on Django 1.9+ or earlier. ``Paginator.page_range`` ~~~~~~~~~~~~~~~~~~~~~~~~ :attr:`Paginator.page_range <django.core.paginator.Paginator.page_range>` is now an iterator instead of a list. In versions of Django previous to 1.8, ``Paginator.page_range`` returned a ``list`` in Python 2 and a ``range`` in Python 3. Django 1.8 consistently returned a list, but an iterator is more efficient. Existing code that depends on ``list`` specific features, such as indexing, can be ported by converting the iterator into a ``list`` using ``list()``. Miscellaneous ~~~~~~~~~~~~~ Loading docs/topics/pagination.txt +8 −2 Original line number Diff line number Diff line Loading @@ -24,8 +24,10 @@ page:: 4 >>> p.num_pages 2 >>> type(p.page_range) # `<type 'rangeiterator'>` in Python 2. <class 'range_iterator'> >>> p.page_range [1, 2] range(1, 3) >>> page1 = p.page(1) >>> page1 Loading Loading @@ -191,8 +193,12 @@ Attributes .. attribute:: Paginator.page_range A 1-based range of page numbers, e.g., ``[1, 2, 3, 4]``. A 1-based range iterator of page numbers, e.g. yielding ``[1, 2, 3, 4]``. .. versionchanged:: 1.9 In older versions, ``page_range`` returned a list instead of an iterator. ``InvalidPage`` exceptions ========================== Loading tests/pagination/tests.py +6 −0 Original line number Diff line number Diff line Loading @@ -233,6 +233,12 @@ class PaginationTests(unittest.TestCase): self.assertEqual(page2.previous_page_number(), 1) self.assertIsNone(page2.next_page_number()) def test_page_range_iterator(self): """ Paginator.page_range should be an iterator. """ self.assertIsInstance(Paginator([1, 2, 3], 2).page_range, type(six.moves.range(0))) class ModelPaginationTests(TestCase): """ Loading Loading
AUTHORS +1 −0 Original line number Diff line number Diff line Loading @@ -600,6 +600,7 @@ answer newbie questions, and generally made Django that much better: Richard Davies <richard.davies@elastichosts.com> Richard House <Richard.House@i-logue.com> Rick Wagner <rwagner@physics.ucsd.edu> Rigel Di Scala <rigel.discala@propylon.com> Robert Coup Robert Myers <myer0052@gmail.com> Roberto Aguilar <roberto@baremetal.io> Loading
django/core/paginator.py +1 −1 Original line number Diff line number Diff line Loading @@ -96,7 +96,7 @@ class Paginator(object): Returns a 1-based range of pages for iterating through within a template for loop. """ return list(six.moves.range(1, self.num_pages + 1)) return six.moves.range(1, self.num_pages + 1) page_range = property(_get_page_range) Loading
docs/releases/1.9.txt +13 −0 Original line number Diff line number Diff line Loading @@ -770,6 +770,19 @@ To fix your ``simple_tag``\s, it is best to apply the following practices: Tags that follow these rules will be correct and safe whether they are run on Django 1.9+ or earlier. ``Paginator.page_range`` ~~~~~~~~~~~~~~~~~~~~~~~~ :attr:`Paginator.page_range <django.core.paginator.Paginator.page_range>` is now an iterator instead of a list. In versions of Django previous to 1.8, ``Paginator.page_range`` returned a ``list`` in Python 2 and a ``range`` in Python 3. Django 1.8 consistently returned a list, but an iterator is more efficient. Existing code that depends on ``list`` specific features, such as indexing, can be ported by converting the iterator into a ``list`` using ``list()``. Miscellaneous ~~~~~~~~~~~~~ Loading
docs/topics/pagination.txt +8 −2 Original line number Diff line number Diff line Loading @@ -24,8 +24,10 @@ page:: 4 >>> p.num_pages 2 >>> type(p.page_range) # `<type 'rangeiterator'>` in Python 2. <class 'range_iterator'> >>> p.page_range [1, 2] range(1, 3) >>> page1 = p.page(1) >>> page1 Loading Loading @@ -191,8 +193,12 @@ Attributes .. attribute:: Paginator.page_range A 1-based range of page numbers, e.g., ``[1, 2, 3, 4]``. A 1-based range iterator of page numbers, e.g. yielding ``[1, 2, 3, 4]``. .. versionchanged:: 1.9 In older versions, ``page_range`` returned a list instead of an iterator. ``InvalidPage`` exceptions ========================== Loading
tests/pagination/tests.py +6 −0 Original line number Diff line number Diff line Loading @@ -233,6 +233,12 @@ class PaginationTests(unittest.TestCase): self.assertEqual(page2.previous_page_number(), 1) self.assertIsNone(page2.next_page_number()) def test_page_range_iterator(self): """ Paginator.page_range should be an iterator. """ self.assertIsInstance(Paginator([1, 2, 3], 2).page_range, type(six.moves.range(0))) class ModelPaginationTests(TestCase): """ Loading