Django in 3 days
This post was composed in WriteRoom for iPhone a couple of days ago. Expect a review soon.
I've heard many good things about Django, and now have a chance to really look at it. For those wondering what it is, Django, pronounced as JANG-oh, is a mature web framework written in Python. Dubbed "the web framework for perfectionists with deadline", Django indeed brings many nice things to the table.
If Ruby on Rails is much about convention over configuration, Django is quite the opposite. Everything is laid out explicitly in Django, and you won't find much "magic" behind the scene.
One of Django's best selling points is its ability to quickly give you a customizable admin interface, and I totally love this feature. Spending a few minutes defining the models, a few more tweaking the model admins, and volla, I've got a nice CRUD interface to work with my (test) data. For a backend accessed only by trusted people, it saved me so much time.
Django comes with comprehensive documentation. I've never written a line of Python code in the past, but was able to find almost everything I need to get started. The free Django book from Apress is a nice touch, too.
That said, I knew nothing about Python, so my first hand experience with Django the framework was also to learn this language at the same time. Again, I was quickly able to find a good book on this topic: Diving into Python. It was truthly a pleasure to read, as the author uses the "learn by examples" style to deliver his knowledge. Every chapter begins with a scary example that makes me confused, then gradually explains all the concepts and relevant stuff. By the time I finished the first five chapters, I was able to start getting through the Django tutorials.
On the flip side, getting Django up and running on my MacBook was a tedious task, particularly the steps to make it interact nicely with MySQL. It took me a full day of reinstalling things and moving them around to make it finally work. Googling didn't ease that pain much.
Another annoying issue that occurred to me was that Python didn't get on well with TextMate, my text editor of choice. Python relies much on indentation, and its lack of explicit closing block made TextMate confused all the time. More often than not, I had to use a specific bundle to reformat my code to make it work. It really sucked.
My current strategy to learn both Python and Django is through doing. I'm rewriting jtale in Django and have made some progress so far. Hopefully it'll be up and running soon (haven't figured out how to deploy it though).
Enough for now.