Rails vs. Django

Date Arrow  December 5, 2007

While watching the Google TechTalk about Django, I came accross this interesting paper highlighting differences between Rails and Django, which might be interesting to many of us in the field.

For those interested, Django is a powerful, MVC framework for creating web applications using the Python programming language. It is very similar in some respects to Rails, but some consider Django to be better suited for high-traffic websites. I haven’t used Django extensively (nor Python as a matter of fact, besides the typical “Hello World” thingy) so I won’t say anything else but the fact that I prefer Ruby’s syntax to Python’s.

Of course this is a subjective opinion! In any case, if it’s anything like Rails, it’s worth considering. Definitely. Dynamic languages are the way to go.

Update, 2008-01-11: You might want to check out this other article of mine!

Tagged   Code · Django · Ruby on Rails

3 Comments

  • #1.   SP 12.05.2007

    I am a former Python head turned Rubyist who know makes living from creating Ruby libraries and plugins for Rails and some Rails applications.

    I used Django on one app and while it was good for the most part I found a distinct difference between Django and Rails in philosophy or direction. Django is more geared toward creating sites where the data is managed by a few administrators, where as both Rails seem more positioned for full user-based web applications.

    I also found Django’s routing much more confusing than Rails’ routing mechanism, however I haven’t actively used Django in quite a while now (18 months?).

  • #2.   SP 12.05.2007

    Another note on your blog is that Python is actually a strongly typed language not a fully dynamic language like Ruby. Just a note as many Python heads might take offense to that.

    Also correction in previous post: “who know makes living…” => “who now makes living….”, I really am not that dumb, but my fingers really are!:)

  • #3.   adrian 12.05.2007

    Thanks for your comments Susan! Just to avoid those “Python heads” to kill me :) I just want to point out that “dynamic” is not the opposite of nor incompatible with “strongly typed”; “dynamic” just means that the variables and methods are bound at runtime, instead of at compile time (like in Java or C++), while “strongly typed” has to do with the fact that the language coerces the “types” of the inputs and outputs when calling methods and assigning variables.

    A language can be “weakly typed” yet “statically bound” like C, or “strongly typed” and “dynamically bound” like Python and Ruby, or “strongly typed” and “statically bound” like Java, and you can have even a language that can be both dynamic and static and strong and weak like Objective-C. The most flexible language I’ve ever seen, by the way.

    Just to make everyone happy, Python and Ruby have more in common than one might think, even if Ruby is more object-oriented than Python (which has many procedural APIs, as far as I saw).

Commenting