Django-emoticons is a django application providing utilities to add emoticons in your templates. Pretty incredible no?
Once you have installed the package in your PYTHON_PATH, register the emoticons and django.contrib.staticfiles apps in your INSTALLED_APPS project's section.
INSTALLED_APPS = ( ... 'django.contrib.staticfiles', 'emoticons', ... )
For our example we will make a template who display the field content of a model, this field has this value:
Coding is fun and sexy :D
So in our templates we will load the emoticons_tags library and use the emoticons filter:
{% load emoticons_tags %} {{ object.content|emoticons }}
Which will render:
Coding is fun and sexy
The emoticons app also provides a tag named emoticons for converting raw text.
{% load emoticons_tags %} {% emoticons %} Documenting is boring but usefull :p {% endemoticons %}
Which will render :
Documenting is boring but usefull
Excluding content within specific markup:
{% load emoticons_tags %} {% emoticons "h3" %} <h3>Serious title :[</h3> <p>Documenting is boring but usefull :p</p> {% endemoticons %}
Which will render :
Serious title :[ Documenting is boring but usefull
If you want to retrieve a list of all availables emoticons you can use the emoticons_index tag.
{% load emoticons_tags %} {% emoticons_index as emoticons_list %} {% for emoticons in emoticons_list %} <p>{{ emoticons.0|emoticons }}: {{ emoticons|join:" " }}</p> {% endfor %}
You can use differents settings for customizing the application:
EMOTICONS_DIRECTORY
The directory where the emoticons files are located, use
'emoticons'
as default.EMOTICONS_LIST
The list of the emoticons used by the application, something like this:
(('(devil)', 'devil.gif'), ('(angel)', 'angel.gif'), ((':)', ':-)', ':=)', '(smile)'), 'smile.gif'), ((':(', ':-(', ':=(', '(sad)'), 'sadsmile.gif'), )
If the HTML code of the emoticons does not fit to your needs, you can
override the 'emoticons/emoticon.html'
template to adjust it.