Kind of an old post, things have changed for both Rails/Django since then.
Though I'd like to comment on part of his article. He says that Django "is not as straightforward as Rails", and then goes on to complain about how Django requires you to pass variables between templates instead of just assigning them as instance variables in the controller and then automatically showing up in the template. I actually like Rails' behavior in this regard, but I think that Django's way of doing it is much more straightforward. You know exactly what is going on. Django as a whole is like that.
He's also trying to code Python in a Ruby or Java style. __methods just don't get used much in Python. Like Guido says, "we are all adults". And come on, having to use parentheses for a function call is bad? That's just lazy. But I've said for some time now, if you are looking for Rails in Python, it isn't Django you are looking for. Pylons is much more similar.
"(the need for () at the end of each method call in Python was killing me)"
--Huh? This doesn't seem as an important point at all.
Plus, Django is not an elegant of a framework at all. The api has been developed as patchwork, and it's forms/views/models are easy if you use them for scafolding, but in real apps you have to do a lot of codding around to customize them.
eg. you can bind a form to a model, but you probably don't want to, or just print the forms (often you need your own look).
So, while on paper django looks good, in practice it can be frustrating.
Python is a great language, but OOP is not it's forte (at least not the kind of OOP you see in .net or java).
Just use something like web.py, on create your own framework. With python is very easy to do.
Many people often try to shoehorn Django into whatever app they're writing and come away with less than ideal experiences. I've always looked at Django as a great app for what it's designed for, which is basically a CMS for trusted users. Sure, it can be used to make almost anything, but anytime I move beyond the trusted-user-CMS area, I avoid it.
Having built many different apps in Django in the last year, I strongly disagree with this. Django has a clever admin interface that gives you easy access to every data model you can dream up, but this is only a really neat hack.
Django provides a very clean layer on top of the database, and a great approach to structuring a system (apps, included urls.py, template dirs, templatetags, middleware). As with anything, though, the more complex the task, the more you need to be aware of what it is doing under the hood. Understanding when Django does lazy queries, where things are processed, etc. is very important.
"... Django has a clever admin interface that gives you easy access to every data model you can dream up, but this is only a really neat hack. ..."
The best thing in django IMOBO is the admin & the fact it makes you concentrate and work on the data first. On the other hand the template engine logic (at least the way some users uggest you use it) [0] is pretty ordinary and unrealistic (LJWorld is mostly read hence static templates). I still think I had a better time using tt2 (TemplateToolkit).
This is really old, but I wanted to post further on this. After continuing to use Django, I got past the admin interface and have been building some pretty great stuff with it. Even hosted a sprint in Portland, OR. There are still issues, in my opinion, around contrib.auth.User but I officially retract my 'only useful for trusted CMS' opinion.
Though I'd like to comment on part of his article. He says that Django "is not as straightforward as Rails", and then goes on to complain about how Django requires you to pass variables between templates instead of just assigning them as instance variables in the controller and then automatically showing up in the template. I actually like Rails' behavior in this regard, but I think that Django's way of doing it is much more straightforward. You know exactly what is going on. Django as a whole is like that.
He's also trying to code Python in a Ruby or Java style. __methods just don't get used much in Python. Like Guido says, "we are all adults". And come on, having to use parentheses for a function call is bad? That's just lazy. But I've said for some time now, if you are looking for Rails in Python, it isn't Django you are looking for. Pylons is much more similar.