Skip to main content

KISS approach to a “Load more” style AJAX paginator

Requirements

  • Django 1.3+

  • jQuery

Features

  • Non-intrusive: your Django view is completely unaware of dynamic load-more stuff going on.

  • There is literally no code (no Python, no Javascript) required to get a fully AJAX style “load more” going.

  • KISS

Quickstart

  • Write your view as usual, handing over an (unpaginated) list of items to a template.

  • Render the list of items in your template as follows:

    {% load pagemore %}
    {% more_paginator items per_page=10 ordered_by="-created_at" as paginator %}
    
    {% for item in paginator.objects %}
    {% if forloop.first %}
    <div class="pagemore-container">
    {% endif %}
    {{item}}
    {% if forloop.last %}
    </div>
    {% if paginator.has_more %}
    <a class="pagemore-paginator" href="?{{paginator.next_query}}">More items...</a>
    {% endif %}
    {% endif %}
    {% endfor %}
    
    <script type="text/javascript" src="{{STATIC_URL}}pagemore/js/pagemore.js"></script>
    <script type="text/javascript">
        $(function() { $(".pagemore-paginator").pagemore(); });
    </script>
  • That’s all!

Pagination Strategies

When a user is paginating through a list of items, while at the same time new items are being inserted, offset based slicing would result in duplicate items being shown. A way to circumvent this is to make sure that the items are properly ordered and to filter on items after a certain point. Both strategies are supported.

Paginate by Slicing

Usage:

{% more_paginator ... strategy="slice" ... %}

Characteristics:

  • Supports both querysets and lists

  • Does not order the objects unless explicitly told to (ordered_by).

Paginate by Filtering

Usage:

{% more_paginator ... strategy="filter" ... %}

Characteristics:

  • Only supports querysets

  • Enforces an ordering of the objects passed (default on id, overridable by ordered_by).

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-pagemore-0.2.0.tar.gz (6.3 kB view details)

Uploaded Source

File details

Details for the file django-pagemore-0.2.0.tar.gz.

File metadata

File hashes

Hashes for django-pagemore-0.2.0.tar.gz
Algorithm Hash digest
SHA256 3debbefdc0781d2c1c470de39b6144d347ed4948c6d3b6bdcd5bac84f8705dcb
MD5 12e80d27249e67da6dfbd15d240ad811
BLAKE2b-256 341096f0121c0b520193c10646448d8e50c76a597e957ce58ee82fe3c0c11561

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.0 This release

1 file

0.1.0

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page