How good is Django, the Python web framework?

Ok, as you know, you are never happy until you have written your own blogging software. So I went the easiest way and I did in Django. As you can see, we lost the comment functionality. I hope it will be back soon; but I need  a way to protect this blog from those pesky spammers.

Now, for a mini-review of how Django fits this site, and Django compared to a CMS like WordPress or Drupal.

Rewriting this site in Django

The reason I have used Django, besides because it is the most popular Python framework, was to take advantage of the multisite functionality, but in fact you cannot run all sites from the same Django instance because you need to load a different settings file for each one, as the current site is determined once and for all in the settings file. You cannot dynamically load different settings depending on the URL for example.

You must use a different WSGI daemon for every instance. If you run everything on a single machine this wastes  memory, and it does not make the sites more decoupled than in Drupal, where you can always copy your settings to a different install on a different machine if need be. A consolation is that working in the Django admin does feel faster than in the WordPress backend.

I had started with building some custom tags for displaying the site name and language in a template depending on the site ID, but then I realized I was not going to use the same template for two different sites anyway, and I did not need to redistribute anything, so I could as well hard code them.

Which brings us to the good thing compared to using a ready-made CMS such as WordPress: the product is custom, so there is no need to bend over backwards to suit the generic and redistributable nature of something ready-made (I find the cognitive load of developing for Django actually less than working on just a WordPress theme).

A Django business?

At the same time, this one-off character is not so good for business, as the only obvious Django related thing you can sell is your labour. There are no ‘easy’ derivatives like templates or modules that often are very popular with large customer segments. You either need to go down the services or the product road. And as Joel Spolski  said, services don't scale.

This leaves products. But then, the framework or language do not count as much as that tiny spark of genius.