The site is now up and running on Django. I made the switch because I really needed to add another high level, interpreted language along the lines of Perl to my repertoire with the demand for Perl dying off. Everyone seems to love Python and I've seen some demand locally for Python and Django devs, so Django seems like the way to go. I've got a bit of work to do here and there such as tweaking css, adjusting the admin interface a bit, and maybe adding back in a bit of functionality that I lost from the Perl version of the site which I decided to leave for later.

Overall, it's pretty cool. Python seems great and I'll try to continue to work with it for pretty much anything I previously would have done in Perl. Django is pretty straightforward and powerful. Someone who is familiar with the framework could easily have a functional site within a couple of hours and maybe even less for something small like this site. I may try to come up with a couple more complex sites to put together with Django to see how that goes. The site at comes to mind as a possibility, if I want to start maintaining that again.

Django does have a couple of downsides, though.

  • Django removes most of what I consider the fun parts. No constructing SQL (in most cases) and trying to make it efficient, no writing classes and figuring out how they fit together, etc.
  • It seems like it could get a bit messy for a large site. All of your models go in one file, all of your custom views in one other file. Maybe there's a way to break that up that I'm currently unaware of, though.
  • I don't 100% trust ORM created SQL or MySQL's optimizer. While it doesn't happen often, I've seen both go horribly wrong. When writing my own SQL I control how it's put together rather than the ORM and have ways of overriding anything MySQL's optimizer might do to cause slow queries.