Skip to main content

KISS approach to a "Load more" style AJAX paginator.

Project description

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).

Project details


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.1.0.tar.gz (6.3 kB view details)

Uploaded Source

File details

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

File metadata

File hashes

Hashes for django-pagemore-0.1.0.tar.gz
Algorithm Hash digest
SHA256 c5a596a1aef4e5d08e0d3999bcfb598f2f15dcdf05c347954ddde49c0daf4319
MD5 50d57ea54716ec8a536262ab0c123140
BLAKE2b-256 a31862f55a9409dbdcc67a83d7eb47279ae3d9f18e7a44d8c0bbeeeccd2b7d0a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page