Skip to content
This repository has been archived by the owner on Jun 13, 2022. It is now read-only.

developersociety/django-paginationlinks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Django Pagination Links

Small package for creating a list of page links from a Django paginator object, similar in style to the Django admin - showing the start and end pages, but only showing a limited list of pages in the middle.

Deprecated

As of Django 3.2 - the Paginator class now supports elided page ranges.

Installation

Using pip:

$ pip install django-paginationlinks

Edit your Django project's settings module, and add paginationlinks:

INSTALLED_APPS = [
    # ...
    'paginationlinks',
]

Usage

Load the template tag:

{% load pagination_links %}

Typical usage, which shows 1 page on each end, and 1 on each side of the current page:

{% get_pagination_links paginator page_obj as pagination_links %}

However the number of pages on each side can be customised, as well as how many pages at the end - both are optional arguments:

{% get_pagination_links paginator page_obj on_each_side=1 on_ends=2 as pagination_links %}

A more fully featured example for a site:

{% load pagination_links %}

{% if page_obj.has_other_pages %}
    {% get_pagination_links paginator page_obj as pagination_links %}
    <ul>
        {% for page_num in pagination_links %}
            {% if page_num.is_current %}
                <li class="current">{{ page_num.number }}</li>
            {% elif page_num.is_filler %}
                <li class="filler">—</li>
            {% else %}
                <li><a href="?page={{ page_num.number }}">{{ page_num.number }}</a></li>
            {% endif %}
        {% endfor %}
    </ul>
{% endif %}