Why I moved from Ruby on Rails to Python/Django and back
blog.carlmercier.com
blog.carlmercier.com
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.
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.
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.
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).
[0] http://www2.jeffcroft.com/blog/2007/aug/09/myth-content-and-...