Django, the view from a parachute
In the last few days I have been learning Django in perhaps the hardest way possible: by being hired to work on a site someone else wrote.
I already had the view from 10000 feet. And since I had to get to this thing rather quickly, I jumped on my parachute from those 10000 feet, and learned it on the way down.
Here's what I knew:
Python Web framework
Regexp-based URL dispatching
Its own template language
Its own ORM and form stuff
I have hacked stuff based on TurboGears, Colubrid, pure CherryPy, Mako/Kid/Cheetah/CherryTemplate templates, Routes, Paste and about half a dozen other frameworks or pieces that are used for frameworks, so how new could it be? Well, not very new. I am starting to notice a sort of sameness in these things. They are all alike.
First, the conclusion: I liked it, I could work with it.
Now for some little detail:
The URL dispatching is nice ,if not really interesting. there seem to be two ways to do this, all frameworks use one or the other, and almost everyone likes regexps better.
The ORM+newforms is quite nice! Of course everything was done with oldforms, which is... not quite so nice. But you can switch pieces as you go, and the code actually simplifies as you hack, so it's good.
The template language I could live without. It doesn't seem to be specially featureful, and it didn't seem as expressive to me as my current favourite, Mako. Luckily you can replace it easily. It's not that it's bad, it's just average.
So, I see no reason to learn it instead of Turbogears, or viceversa. On the other hand, if you know one, you can learn the other in perhaps a weekend, so there's no point on not having at least a basic knowledge of both.
The Django templating system is designed for designers more than developers, hence the reduced expressiveness. I like the filters in the templates, since it reminds me of Unix pipes. The reduced expressiveness also makes it hard to stick application logic inside of the templates. I've used Spyce, plain CGI, TurboGears, and Django. Django has two big selling points (for me, anyway): the admin utility and good docs (this is a sore point for a lot of open source projects).
Yes, the admin tool is great, and the docs are good, or at least better than the competition's.