
Why I moved from Ruby on Rails to Python/Django and back - iamelgringo
http://blog.carlmercier.com/2007/01/30/why-i-moved-from-ruby-on-rails-to-pythondjango-and-back/
======
AF
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.

------
ardit33
"(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.

------
mtrichardson
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.

~~~
nikolaj
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.

~~~
bootload
_"... 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_ ).

[0] [http://www2.jeffcroft.com/blog/2007/aug/09/myth-content-
and-...](http://www2.jeffcroft.com/blog/2007/aug/09/myth-content-and-
presentation-separation/)

------
hello_moto
He's going to go back to ASP.NET again once ScottGu releases MVC framework.
Wait and see.

