Rails - Django Comparison
scribd.com
scribd.com
But the split-screen format really drives home the message that Rails and Django -- apart from a few minor differences that will probably converge over time -- are the same thing, implemented in different languages. There's just not a lot in there to hang a flame war on. Emacs vs vi, this isn't.
I will tack on that the framework will not make or break your idea. The advantage of one framework over another should be weighed in how long it takes your team to go to market; this translates into asking your development team (or yourself) what they (or you) can handle in the coming months in anticipation of the project taking off. Also your code should be done in such a way that you can ditch whatever framework you currently use for something better suited for what your future requirements might be.
I will add that I believe TurboGears to be the better platform all around, but am sticking to Rails because:
1) I like Ruby/Rails
2) I don't have the time/energy to dive into Python/TurboGears
3) I can implement something by myself confidently in Rails RIGHT NOW, as opposed to a few months down the road after getting comfy with Python (while at the same time maintaining my day job and OTHER life responsibilities)
The case for Django is the clean, modular architecture, making it possible to split a project into reusable applications. With Rails DHH took a strong anti-component stance, deciding that it was better to make everything easy to reimplement. As a result, even common things like the registration gem have too many integration points. This decision will matter in the long run.
Django has access to all the mature Python libraries, but its ORM is limited. Pythonic model specification and automatic model validation against the SQL metadata is great for the DRY philosophy; but there is no migration metaphor (yet), there's no table inheritance metaphor (yet), and even pessimistic locking requires a hack (so far). The best hope is an effort under way to make the Django ORM a wrapper for the infinitely more powerful SqlAlchemy, which some people use on top of Django anyway, foregoing its data-related tools including Admin.
And of course Rails is integrated with every concievable Ajax technology, allowing a hundred ways to implement the <blink> tag.
The Rails community is growing from an influx of ex-PHP scripters, bringing with them less disciplined coding styles, which the more Perl-like overly-concise features of Ruby encourage. The RoR environment is going to be the new Perl - a powerful tool for certain applications, applied far more broadly than intended, with a CPAN full of one-off solutions for every concievable problem, but no culture of solidly engineered modules.
1. I wanted to learn python, but was not really interested in ruby 2. Rails is too hyped. The problem here is that people pigeonhole you when they hear that you are a rails developer. If someone ever came to me and told me he was a rails developer, I would immediately perceive this guy as someone who jumps on technology bandwagons. The type of guy who listens to top40 charts. 3. Django just had a way better argument when it came to performance
and the most important reason of all
4. When I created a new Django project, it just created 3 files. Rails (when I tried it) created a bunch of folders and files. People have to understand simplicity in all its facets to be effective programmers, in my opinion!
I say pick one, learn it as well as you can, don't worry that you picked "the wrong framework", and go with it.
This is true of any framework: the second that you go outside the bounds of what it was designed to do, you are going to spend lots of time bending it to your will.