Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (
Help us improve Python packaging - Donate today!

Templatetags for django-taggit.

Project Description


This is a reusable django app which adds some templatetags to django-taggit_.

This is a fork the application "django-taggit-templatetags".

django-taggit-templatetags2 requires Django 1.6 or greater.

The application works well under python 2.7 and 3.x


Just install ``django-taggit-templatetags2`` via ``pip``::

$ pip install django-taggit-templatetags2

After installing and configuring django-taggit_, just add ``taggit_templatetags2`` to your ``INSTALLED_APPS`` in your ````::



Now there are some templatetags enabled, at the moment only to create lists of
tags and tag-clouds.

In your templates, you need to load ``taggit_templatetags2_tags``::

{% load taggit_templatetags2_tags %}


List of tags for the selected object::

{% get_tags_for_object <some_model_object> as "tags" %}


After loading ``taggit_templatetags2_tags`` you can create a list of tags for the
whole project (in the sense of djangoproject), for an app (in the sense of djangoapp),
for a model-class (to get a list for an instance of a model, just use its tag-field).

For the tags of a project, just do::

{% get_taglist as tags %}

For the tags of an app, just do::

{% get_taglist as tags for 'yourapp' %}

For the tags of a model, just do::

{% get_taglist as tags for 'yourapp.yourmodel' %}

You can also customize the name of the tags manager in your model (the default is *tags*)::

{% get_taglist as tags for 'yourapp.yourmodel:yourtags' %}

No matter what you do, you have a list of tags in the ``tags`` template variable.
You can now iterate over it::

{% for tag in tags %}
<li>{{tag}} ({{tag.num_times}})</li>
{% endfor %}

As you can see, each tag has an attribute ``num_times`` which declares how many
times it was used. The list of tags is sorted descending by ``num_times``.


For convenience, there's an inclusion-tag. It's used analogue. For example,
for a taglist of a model, just do::

{% include_taglist 'yourapp.yourmodel' %}


A very popular way to navigate through tags is a tagcloud_. This app provides
some tags for that::

{% get_tagcloud as tags %}


{% get_tagcloud as tags for 'yourapp' %}


{% get_tagcloud as tags for 'yourapp.yourmodel' %}

respectivly. The resulting list of tags is ordered by their ``name`` attribute.
Besides the ``num_items`` attribute, there's a ``weight`` attribute. Its maximum
and minimum may be specified as the settings_ section reads.

Inclusion-Tag: tag cloud

Even for the tagcloud there's an inclusion-tag. For example, for a tagcloud
of a model, just do::

{% include_tagcloud 'yourapp.yourmodel' %}

Inclusion-Tag: tag canvas

TagCanvas_ is a Javascript class which will draw and animate a HTML5 canvas
based tag cloud. You can use this library in your application as follows::

<!-- Somewhere before the tag include_tagcanvas. For example, in the "head". -->
{% include "taggit_templatetags2/tagcanvas_include_js_static.html" %}

{% include_tagcanvas 'element_id' 'width px' 'height px' 'some-url-name' 'yourapp.yourmodel' %}

- element_id - name to create identifiers for html tags
- some-url-name - url to view a list of objects for the selected tag. Default: *tagcanvas-list*.
For example, some-url-name='myurlname', then it must be an entry in
file like this::

from taggit_templatetags2.views import TagCanvasListView

urlpatterns = patterns(
TagCanvasListView.as_view(), name='myurlname'),

Or you can use the default view, and then you have to add the following things:

- in

from taggit_templatetags2 import urls as taggit_templatetags2_urls
urlpatterns = patterns(
url(r'^tags/', include('taggit_templatetags2.urls')),

- override template "taggit_templatetags2/tagcanvas_base.html" and
- override template "taggit_templatetags2/tagcanvas_list_item.html" to customize the look

To use this inclusion-tag, make sure that 'django.core.context_processors.static'
appears somewhere in your TEMPLATE_CONTEXT_PROCESSORS setting.

.. _settings:


There are a few settings to be set:

TAGGIT_TAGCLOUD_MIN (default: 1.0)
This specifies the minimum of the weight attribute of a tagcloud's tags.

TAGGIT_TAGCLOUD_MAX (default: 6.0)
This specifies the maximum of the weight attribute of a tagcloud's tags.

If you want to use the weight as font-sizes, just do as follows::

<font size={{tag.weight|floatformat:0}}>{{tag}}</font>

So the weights are converted to integer values.

If you're using your own Tag and/or TaggedItem models rather than the default
ones (`Custom Tagging`_), you can specify a tuple for each model (app,model_name)

TAGGIT_TAG_MODEL = ('myapp','MyTag')
default: ('taggit', 'Tag')

TAGGIT_TAGGED_ITEM_MODEL = ('myapp','MyTaggedItem')
default: ('taggit', 'TaggedItem')

Number items for tag cloud.
default: 10

Order for the queryset used to generate the list.
default: -num_times

Order for the queryset used to generate the list.
default: name


Clone code repository::

$ git clone

Installation dependencies needed to test the application::

$ pip install -e <path to the application>[tests]

Starting tests::

$ python ./ test

Starting test coverage::

$ python ./ manage test

Starting tox tests::

$ tox


Thanks to the python- and django-community, in particular to `Alex Gaynor`_,
the inventor of django-taggit_ and a wonderful guy to argue with.
Thanks to `Mathijs de Bruin`_ as well for his helpful pull requests.

.. _django-taggit:
.. _tagcloud:
.. _Alex Gaynor:
.. _Mathijs de Bruin:
.. _Custom Tagging:
.. _TagCanvas:

Release History

This version
History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


Download Files

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

Filename, Size & Hash SHA256 Hash Help File Type Python Version Upload Date
(67.6 kB) Copy SHA256 Hash SHA256
Wheel 3.4 Dec 9, 2016

Supported By

Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Kabu Creative Kabu Creative UX & Design Google Google Cloud Servers Fastly Fastly CDN StatusPage StatusPage Statuspage DigiCert DigiCert EV Certificate