First off a little comparison.
Tag lines
-
Drupal: "Drupal is a free software package that allows an individual or a community of users to easily publish, manage and organize a wide variety of content on a website."
-
Django: "Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design."
Clean and Rapid > Easy: Django +1
I'm a hater.
I'm tired of hearing about the benefits of Drupal. I mean, come on, it the end it's just a series of modules built in php, that are impossible to modify without a third degree black belt. I mean only yesterday did Jimmy Pells open a window in the office in order to throw his laptop out after trying to upgrade to Drupal 6.x. (That might be a lie, but it felt like it was going to happening). All I hear are horror stories about it's inflexibility and that there needs to be better solutions out there.
This is, of course, being written by someone with limited Drupal experience (I set it up once), so please take everything with a grain of salt. I'm also a borderline Django fan boy, so... yeah.
Why am I about to compare Drupal to Django? I mean they are two inherently different beasts. On one hand Drupal is a CMS, with framework tendencies where Django is a framework with CMS tendencies. The real benefit in Drupal is the drop in modules that allow you to quickly customize a site to your needs with very little build time. Well Django does that too. It's not as obvious, but it's there.
Modules:
Drupal:
About 1,000 and counting. Drupal does a very good job at marketing it's modules, they right on their home site, and because of that it makes them easier to find and use.
Django:
About 200 on that site and if you search Google code you will find some more. The lack of a centralized location makes them a little harder to find, but generally when you do find them they meet your needs.
Django builds projects in apps, a series of functional blocks, i.e. blogs that are separated for reuse. Because of this, more and more Django users are starting to open source these apps for public use. Allowing for complex Django sites to be assembled, not built. Optards get excited.
For example lets look at a simple blogging application. Here is James Bennett's blog and here is the list of the 8 different modules he "assembled" in order to build the site. Well 8 sounds like a lot, but the blog application is just one part. The others do different tasks like comment_utils filters spam, django_tagging implements tagging and typogrify applies styling.
Another example and the reason for this post is Pinax. Pinax is an open source project that integrates 24+ external apps plus 8 internal apps to create a Facebook like application. Basically everything you need for a "Web 2.0" site in one pretty package.
I would recommend signing into the demo site, it doesn't require an email, to poke around. You will see blogs, messaging, friends, wikis, groups, et al. This post shows how one user used Pinax to create a community site in 40 hours. The author uses Pinax by installing it then removing the pieces he didn't need. The reverse could have been true as well, installing each module individually.
The result: http://trailmapping.com/.
The greatest benefit I feel is the rapid, clean development that happens with Django. Instead of trying to make Drupal do things it shouldn't be doing, we can install adds-ons or 'gasp' develop custom modules to give the client exactly what they need. I think you will find that the customers and developers will be much happier people.
Drupal is more established with a larger user base and a more proven technology. Django, however, is catching up.
Django is clearly a superior technology. I've used both Drupal and Django, and Django is head-and-shoulders above Drupal for three reasons: loosely coupled architecture that makes extending the framework easy, vibrant developer community with constant innovation (e.g. jtauber and pinax), and its written in Python - a superior language for OO and MVC design patterns.