Browse files

Fixed #2075 -- Added 'page' parameter to object_list generic view. Th…


git-svn-id: bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
1 parent 9b86db9 commit fc2a02f9666a2cd610443fc2107560b9832a017a @adrianholovaty adrianholovaty committed Jun 3, 2006
Showing with 27 additions and 5 deletions.
  1. +4 −3 django/views/generic/
  2. +23 −2 docs/generic_views.txt
@@ -4,8 +4,8 @@
from django.core.paginator import ObjectPaginator, InvalidPage
from django.core.exceptions import ObjectDoesNotExist
-def object_list(request, queryset, paginate_by=None, allow_empty=False,
- template_name=None, template_loader=loader,
+def object_list(request, queryset, paginate_by=None, page=None,
+ allow_empty=False, template_name=None, template_loader=loader,
extra_context=None, context_processors=None, template_object_name='object',
@@ -38,7 +38,8 @@ def object_list(request, queryset, paginate_by=None, allow_empty=False,
queryset = queryset._clone()
if paginate_by:
paginator = ObjectPaginator(queryset, paginate_by)
- page = request.GET.get('page', 1)
+ if not page:
+ page = request.GET.get('page', 1)
page = int(page)
object_list = paginator.get_page(page - 1)
@@ -641,8 +641,10 @@ A page representing a list of objects.
* ``paginate_by``: An integer specifying how many objects should be
displayed per page. If this is given, the view will paginate objects with
- ``paginate_by`` objects per page. The view will expect a ``page`` query
- string (GET) parameter containing a zero-indexed page number.
+ ``paginate_by`` objects per page. The view will expect either a ``page``
+ query string parameter (via ``GET``) containing a zero-indexed page
+ number, or a ``page`` variable specified in the URLconf. See
+ "Notes on pagination" below.
* ``template_name``: The full name of a template to use in rendering the
page. This lets you override the default template name (see below).
@@ -711,6 +713,25 @@ If the results are paginated, the context will contain these extra variables:
* ``hits``: The total number of objects across *all* pages, not just this
+Notes on pagination
+If ``paginate_by`` is specified, Django will paginate the results. You can
+specify the page number in the URL in one of two ways:
+ * Use the ``page`` parameter in the URLconf. For example, this is what
+ your URLconf might look like::
+ (r'^objects/page(?P<page>[0-9]+)/$', 'object_list', dict(info_dict))
+ * Pass the page number via the ``page`` query-string parameter. For
+ example, a URL would look like this:
+ /objects/?page=3
+In both cases, ``page`` is 1-based, not 0-based, so the first page would be
+represented as page ``1``.

0 comments on commit fc2a02f

Please sign in to comment.