django-currencies allows you to define different currencies, and includes template tags/filters to allow easy conversion between them.


To install it, run the following command inside this directory:

python setup.py install

If you have the Python easy_install utility available, you can also type the following to download and install in one step:

easy_install django-currencies

Or if you’re using pip:

pip install django-currencies

Or if you’d prefer you can simply place the included currencies directory somewhere on your Python path, or symlink to it from somewhere on your Python path; this is useful if you’re working from a checkout.

Note that this application requires Python 2.3 or later, and a functional installation of Django 1.0 or newer. You can obtain Python from http://www.python.org/ and Django from http://www.djangoproject.com/.

Set Up

To use the currencies system with all its default settings, you’ll need to do the following:

  1. Add currencies to the INSTALLED_APPS setting of your Django project.

  2. Add currencies.context_processors.currencies in your TEMPLATE_CONTEXT_PROCESSORS setting of your Django project.

  3. Add this line to your site’s root URLConf:

    (r'^currencies/', include('currencies.urls')),
  4. Run the command python manage.py syncdb.

The syncdb command creates the necessary database tables and creates permission objects for all installed apps that need them.

That’s it!


Django currencies, defines a set_currency view, in which you need to pass the new currency you want as a currency variable (as POST), and it will be set. urls.py, includes the named url, so you can do:

{% url currencies_set_currency [currency] %}

A form that could handle the currency switching could be defined like so:

<form id="currency_switcher" method="POST" action="{% url currencies_set_currency %}">
        <select name="currency" onchange="$('#currency_switcher').submit()">
        {% for curr in CURRENCIES %}
                <option value="{{ curr.code }}"
                    {% ifequal curr.code currency.code %}selected="selected"{% endifequal %}>
                            {{ curr.symbol }} {{ curr.name }}
        {% endfor %}
                <input type="submit" value="Set" />

Context Processors

Django currencies, provides a currencies.context_processors.currency, which gives you the following template variables:

A list of the available currencies.

The currently set currency

Template Tags and Filters

The currencies.templatetags.currency module defines a template tag and filter which may be used to work with currencies.

Tag reference


Retrieves a list of Tag objects associated with a given model and stores them in a context variable.


{% change_currency [price] [currency_code] %}


{% change_currency product.price "USD" %}

# or if we have the currencies.context_processors.currencies
# available:

{% change_currency product.price CURRENCY.code %}

Filter reference:



{{ [price]|currency:[currency] }}


{{ product.price|currency:"USD" }}