mirror of https://github.com/django/django.git
Fixed #2075 -- Added 'page' parameter to object_list generic view. Thanks, kanashii@kanashii.ca
git-svn-id: http://code.djangoproject.com/svn/django/trunk@3071 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
9b86db9bf2
commit
fc2a02f966
|
@ -4,8 +4,8 @@ from django.core.xheaders import populate_xheaders
|
|||
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',
|
||||
mimetype=None):
|
||||
"""
|
||||
|
@ -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)
|
||||
try:
|
||||
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
|
||||
page.
|
||||
|
||||
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``.
|
||||
|
||||
``django.views.generic.list_detail.object_detail``
|
||||
--------------------------------------------------
|
||||
|
||||
|
|
Loading…
Reference in New Issue