A few weeks ago, i was at the London Web Frameworks where Django, Catalyst and Ruby-on-Rails developers talked about their stuff. I was most intrigued by Django because of the good quality and content of the presentation. I hadn’t heard or seen much about it previously, so I went ahead and took a look. And was still happy.
A “web framework” is something that has standard parts of making web applications abstracted and componentized for you so all you do is define parts of your app that deviate from standard, and the framework does the rest. What different frameworks do differs: in case of Django, the main parts are templating, object-relation mapper (ORM), caching, users, admin backend and roles&rights.
I’ve seen quite a few web “frameworks”/CMS-es previously – both home-cooked and “industrial”. Django has the best price/performance of all – the least amount of code does you the most amount of work. Less code means better time-to-market, less bugs and better maintainability.
It’s good to have a consistent story for your app. I like their story about how Django was born in a newspaper newsroom where they needed to turn out apps quickly and have people administer them who had no tech background (news editors), and also how news editor vs reader is the reason for clear distinction between backend and frontend, which I see as a good thing. Web apps need good backends split from frontends. Somehow the whole thing, even though it’s not at 1.0 yet, feels quite polished and refined and written by people who clearly know what they are doing.
I like the community too. I posted a question about how to customize parts of the admin backend, since the code that I looked at was horrible spaghetti. I expected to receive something like “good point, we might look at it in the future… or then again, we might not bother at all” which is sometimes the case for these “open source enthusiast” type of projects. Instead, I got “you’re using an older version, pull the newest code where it’s fixed already” which it indeed was. Quite reassuring about the project’s future and sustainability.
The freshest piece of news is that Django is running an application on washingtonpost.com to see history of US Congress votes. Now if Washington Post trusts it, it can’t be too bad, eh? So in my future endeavours, I might go with it, since all I’ve seen so far is mostly good.
Some small things I’ve seen which could be improved:
- in admin, you can’t have use a custom function output for sorting or filtering – in some cases I’d need to do that, having a boolean/list/foreignkey column is not always optimal
- hmm was there anything else? ahh sometimes on Windows the development server doesn’t reload the models or views, even though it says in the docs it should, and mostly it does, but sometimes old errors are cached until you restart the server – no biggie really, restarting is just a few keypresses.