Skip to main content

django-lazy-tags

https://img.shields.io/pypi/v/django-lazy-tags.svg Documentation Status https://travis-ci.org/grantmcconnaughey/django-lazy-tags.svg https://coveralls.io/repos/grantmcconnaughey/django-lazy-tags/badge.svg?branch=master&service=github

A Django app for easily loading template tags via AJAX.

Installation

1. Install via pip

pip install django-lazy-tags

2. Add to installed apps

INSTALLED_APPS = (
    # ...
    'lazy_tags',
)

3. Add the lazy tags urls to your root urlconf.

urlpatterns = patterns('',
    # ...
    url(r'^lazy_tags/', include('lazy_tags.urls')),
)

Usage

First, load the lazy_tags library in your templates.

{% load lazy_tags %}

Then, call the lazy_tag template tag passing your tag name as the first parameter. The format is tag_library.tag_name where tag_library is what you would load at the top of the page (e.g. my_tags) and tag_name is the name of your template tag (e.g. my_template_tag). After the first argument to lazy_tag simply pass the rest of the args and kwargs just as you would pass them to your own tag.

This:

{% load my_tags %}

{% my_template_tag arg1 arg2 kw1='hello' kw2='world' %}

Becomes this:

{% load lazy_tags %}

{% lazy_tag 'my_tags.my_template_tag' arg1 arg2 kw1='hello' kw2='world' %}

After placing your template tags in the template you still need to specify where you would like the AJAX JavaScript to output to the page. That is what the lazy_tags_js tag is for:

{% block js-additional %}
  {% lazy_tags_js%}
{% endblock %}

This will spit out the JavaScript required to run the AJAX. The JavaScript changes depending on your LAZY_TAGS_AJAX_JS setting.

The lazy_tag decorator

django-lazy-tags also includes a decorator that can be used on template tags that use simple_tag. When using the lazy_tag decorator you can use your template tags exactly the same as before and they will use AJAX.

from lazy_tags.decorators import lazy_tag

@register.simple_tag
@lazy_tag
def show_user(pk):
    user = User.objects.get(pk=pk)
    return render_to_string('user/show_user.html', {
        'user': user,
    })

There are a few caveats with this method. First, the decorator currently only works with tags that use simple_tag. Hopefully this will work with inclusion_tag in the future. Secondly, the lazy_tag decorator must come after the simple_tag decorator.

Settings

LAZY_TAGS_AJAX_JS

The library to use to run AJAX. Options are 'javascript', 'jquery', or 'prototype'. Defaults to 'jquery'.

LAZY_TAGS_CACHE_TIMEOUT

The timeout on each lazy tag cache. Defaults to 60 (seconds).

LAZY_TAGS_ERROR_MESSAGE

The error message to display if the AJAX request fails. Defaults to 'An error occurred.'

Customizing the Loading Animation

This is the default HTML on the page before the AJAX request completes:

<div id="{{ tag_id }}" class="lazy-tag">
    <div class="lazy-tag-spinner-container"
         style="width: 100%; text-align: center;">
        <img id="{{ tag_id }}-spinner" class="lazy-tag-spinner"
             style="width: 15px; height: 15px;"
             src="{static_url}img/lazy_tags/spinner.gif" />
    </div>
</div>

To customize the loading animation, override the lazy-tag, lazy-tag-spinner-container, or lazy-tag-spinner classes in your CSS.

Current Limitations

  • Does not work with tags that take context.

  • Template tag arguments must be serializable (str, unicode, int, float, etc.).

Metadata

Release files for django-lazy-tags 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-lazy-tags 0.5.0
File Size Uploaded
django-lazy-tags-0.5.0.tar.gz 31.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for django-lazy-tags 0.5.0
File Interpreter ABI Platform
django_lazy_tags-0.5.0-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 59.9 kB

Release files / django-lazy-tags-0.5.0.tar.gz

Download URL django-lazy-tags-0.5.0.tar.gz
Size 31.9 kB
Tags Source
SHA-256 checksum
How to use checksums
8fb0645cd7bd46a8e7c372de7faed2929d5508ef5a205d8fc7985a5eaa9a1e57
BLAKE2b-256 checksum
How to use checksums
9704c5e6b0ecbb95a015a52ba0c0891465d2a58c80fe190d4e0d45a76a7d59f5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / django_lazy_tags-0.5.0-py2.py3-none-any.whl

Download URL django_lazy_tags-0.5.0-py2.py3-none-any.whl
Size 27.9 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
b3a81cf81420ea60eb146fe0f104843299535e78bb6b00bb2f721ec48c2e0ad4
BLAKE2b-256 checksum
How to use checksums
5f2f35d342aa82c7126d6c49001d171cb5962b33afe45175ecf6ce3efe4cffd0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.5.0 This release

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.3

2 release files

0.2.2

1 release file

0.2.1

0.2.0

1 release file

0.1.0

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page