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