Joel Jensen, web developer, wrote the stuff below for the Ruby.MN list 
(Ruby on Rails list) about his experience with Django after much RoR use.

Mike

--------------------------------------------------------------------------


Date: Thu, 2 Oct 2008 16:47:35 -0500
From: Joel Jensen
To: ruby.mn at ruby.mn
Subject: Re: Why Django? [was Re: [ruby.mn] choosing a general-purpose interpreted language]

I'm building a Django news site right now. Have been, on an off for a 
while. I've built 10 commercial rails sites, over the last 3 years and 
here are the differences as far as I can see.


The main advantages Django offers are,
Its template structure (huge sell for some type of sites)
Its automatic admin interface
Its stability
Its user management
Its modularity

Its template structure:

Basicly, a django site defines a base template, then any section can 
override parts of the base template with their own content. It's like 
partials, but in reverse you don't include the partial in your page ( you 
can if you want) you include the the page around your partial. A child 
page inherits and overrides sections in the parent or base template. The 
result is that for news sites, you can swap out the sidebar or ad section 
or whatever part of a page, without rewriting the base template.

Its automatic admin interface:

This is what drew me initially, you make the model, it makes the admin 
interface, and it's usable out of the box. I use AjaxScaffold for some 
admin interfaces in rails, but before that came around, It was pretty much 
code it all from scratch. With django, you can make an admin interface to 
gather content before the content display pages are ready, great for news 
sites with tight deadlines. If you need to add another section, or 
feature. Make the model, generate the admin section, hand that off to the 
content creators. THen you can focus on the site, and even get REAL 
content. No more Lorem Ipsum.

Its stability

django runs with mod_python under apache which is very stable and battle 
tested, it supports caching with squid etc... It's about 50% faster than 
rails in generating pages. Many large sites use it currently and have 
little or no difficulty with high load ( slashdoting ...)

Its user management

User management is baked in with django. Users are granted access to the 
admin section, by user and by section they are trying to get into.  In a 
news site this is good to keep the ad guys out of the news section...

Its modularity

Django apps are python modules. The templates inherit from the base.  If 
you find a module you like, voting, polls whatever, just add it to the 
root, change the regexp for url rewriting and you are good.


The bad:

The template language doesn't allow code in the template. no <%= 
Articles.find(:first).body %> stuff. You must use the djano templating 
language or extend the template to handle your special case. This can be 
annoying.

Test cases arent baked in, as in rails.

No incremental data changes like migrations, I like this but I shouldn't

Ajax more difficult, This is a mixed annoyance. It forces the developer to 
code the Ajax, not that hard with JQuery or Prototype, but it still 
requires the developer to do the code. I'm not sold on the whole "if the 
developer writes the javascript they know what it's doing better" 
arguement. Typically a person who writes a decent rails app, knows what 
they are doing, and wants it done fast.

All said, Django is better suited for news / CMS type sites. whereas Rails 
for application type sites.


Joel Jensen