Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm looking to deploy my Django application using juju. Quickly looking over the charm store, I noticed there are two different charms to do this. One simply named python-django and another called django-rainbow.

The python-django charm is described like:

This charm will install Django. It can also install your Django project and his dependencies from either a template or from a version control system. It can also link your project to a database and sync the schemas. This charm also come with a Fabric fabfile to interact with the deployement in a cloud aware manner.

And django-rainbow like so:

Django-rainbow is a full-fledged Django web project deployment charm. One can deploy many projects onto a single instance by maintaining individual config files pertaining to the project. Django-rainbow is a safe and convenient platform for development or production web server management. Web sites are updated instantly using mercurial based versioning. Your django-rainbow project file can be stored for future use, allowing anyone using juju a fail safe method to develop and deploy your project without creating conflicting structure. Django-rainbow is a "Set it and forget it" platform leaving development issues with the developers :)

What are the differences and why would I choose one over the other?

share|improve this question
up vote 3 down vote accepted

What are the differences and why would I choose one over the other?

Both charms are similar in term of functionality but differ in there completeness.

Database support:

django-rainbow support only mysql and not as a relation but installed in the same unit that the django project is installed.

python-django support only postgresql for now. But mongodb and mysql are on the way (see


django-rainbow support apache2 and you need to configure your vhost manually in the charm's configuration file.

python-django works with a wsgi relation for now only a Gunicorn subordinate implement the interface.

Only in the django-rainbow charm:

  • you can configure the domain name of your django.contrib.sites app.

Only in the python-django charm:

  • a website relation (for load balancing for example)
  • a Memcached relation
  • an upgrade hook (upgrades packages, requirements.txt, pip, etc)
  • a Juju compatible fabfile to interact with your Django deployment
  • it can be extended via application subordinate charms (see the section in the README)

Low level:

  • the django-rainbow charm is written in bash while the python-django charm is written in python.
share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.