Actually, my first impression was last month, but I’ve only really had the chance to sit down and check stuff out over the past couple of days. What I’ve seen so far has been really good. In a single sentence: I think I can build some cool stuff with Django.
I’m putting the finishing touches on a website for my wife and her coworkers to sell handmade jewelry. I’m using Myghty and SQLObject for it, and the experience has been really positive. The project was originally going to be a Plone based app, but I ended up having a hard time fitting my stuff into the Plone model of doing things. Of course, moving to Myghty meant that I had to build a bunch of stuff from scratch. SQLObject saved me a lot of time on the backend, I had a working database model in less than an hour of paper planning / typing.
Building the back end adminstrative stuff with Myghty was pretty much the same old CRUD that’s involved with just about every LAMP app. It’s boring, repetitive, and gets old quick. If I’d used Django (which wasn’t released when I started the project back in May), this kind of stuff would have been delivered for free. Which would have saved me an awful lot of time and typing.
All the CRUD was one of the main reasons I was trying to build the app in Plone in the first place. I was really impressed with Plone archetypes. It was neat being able to build objects with complete editing stuff built automatically. It got hairy later on when I was trying to build the frontend stuff. Object databases are confusing to me, and ZPT just doesn’t work for my way of thinking. It was a pretty frustrating experience. So I ditched Plone (sorry Plone) and went with Myghty. It made sense because I’d just started working 9-5 as a Perl / Mason developer, so it’s nice having some heavy similarities between the day job and off hour projects.
When Adrian presented Django last month, I was kind of turned off by what appeared to be strange ways of building URL parsing. I loved the admin / db-api stuff instantly, but thought the front end might be too much for me handle comfortably. After running through the tutorials, and experimenting a bit, I found out I was totally wrong. So wrong, that I actually ended up using the basic Django URL parsing concept for my Myghty dhandlers.
So far I’ve tried a handful of Python web frameworks, Zope / Plone, Myghty, Webware, CGI (is that a framework?), and now a bit of Django. Of all of them the Myghty & SQLObject seems the most natural to me. That said, Django is what I wanted Plone to be way back when. I can’t really say a whole lot more than that until I try and build something substantial with it. Paraphrasing what Jason writes in his blog Django is sort of between Myghty and Plone in terms of the ratio of what you get for free, and how much you’re ultimately forced into a certain model. The ratio could also be something like the amount of time I save versus what how much I clench my jaw during the course of the build out. Myghty is right about level on both scales, Zope is definitly way too far on the jaw-clenching side of things, my first impression of Django is that I’m probably going to kind of squish my face up a few times as I learn stuff, but the free stuff is ultimately going to far outweigh any stuff I’m not sure about.
The thing I like about the whole RAD web app Rails / Django world is the idea that you can implement an idea very quickly. Quick is a big deal to me. I am a Chicago Transit Authority sideline coder. The majority of the work on any side projects I’m messing around with happens in the 90 minutes I spend on the train to and from work each day. If Django lets me churn out ideas as quickly as I suspect it will, then it will most likely become my preferred web app making doo dad.
It also helps that the website and documentation is like a big fat candy bar. I love it.
Also, as an aside, I don’t want to hurt anyone’s Plone feelings. I really do think Plone is a great product, it’s just not for me. At least, until I have some big CMS to build, in which case it would be my first choice.