Skip to main content
  1. Dispatches/

Django Rocks My World

·851 words·4 mins
Articles Assorted Geekery Development Django Tech Python
Daniel Andrlik
Author
Daniel Andrlik lives in the suburbs of Philadelphia. By day he manages product teams. The rest of the time he is a podcast host and producer, writer of speculative fiction, a rabid reader, and a programmer.

So as I mentioned before I’ve been learning Python, and it has been a lot of fun. It says something that I can spend all day at work writing code, only getting up from the computer to scavenge the vending machines, but when the end of the day comes I find myself rushing home so that I can pick up where I left off in my Python lesson plan. I finished working my way through Dive Into Python a few days ago, which is an excellent introductory text if you already have a background in programming. If you are interested in Python, but new to programming, you might be better off with the text How To Think Like A Computer Scientist: Learning with Python. Both books are “open source” and available for free online reading.

There are a lot of things I really love about Python, dynamic yet strong typing, its capacity for introspection, the interactive interpreter, I could go on. Really what it comes down to is that Python is fun! It strips away unnecessary complexity and lets you dive right into the good stuff. I don’t know why it isn’t used more for instruction. I value the background my early training in Java and C++ gave me, but to be totally honest I rarely use either language anymore as their dynamic scripting language counterparts do everything I need and more. Maybe that makes me less of a programmer, but I don’t really care, because I can produce programs that work and perform just as well (or better) with less headache. I’ll take that any day. :)

So, since I was looking for a way to practice some of my Python I decided to take a look at the Django framework, which is a rapid development framework for Python powered web applications. My attention was drawn to it as there has been a lot of buzz about it of late, with Python users galore crying out that the framework is a “Rails killer”. Then the fires of fanboy love were fanned to a roaring blaze after a recent benchmark comparison between Django (Python), Rails (Ruby) and Symfony (PHP) frameworks, and Django came out in the lead by a lot. (Incidentally, due to some quirk of the wiki over at Ruby on Rails, you’ll need to go to their wiki first and then try to enter the URL or you’ll get error messages. Go figure.) It certainly got my attention however, so I decided to postpone my Ruby on Rails explorations while I checked out Django.

All I have to say is: Wow.

Django makes database-driven development so easy I almost feel dirty getting away with it. You define your database model in Python terms and run Django’s syncdb utility to automatically generate/modify database tables for all applications you want to set up in the current project. Afterwards, you can access your database records in you code as if they were Python objects, and the framework will do all the caching and querying the database for you via the object’s inherited methods. You can also write raw SQL if you need it, but to be honest I think most people will only require that in the most rare of cases. The database API is really powerful and dead simple to use as well.

One of the other great perks is that Django gives you a project administration interface for free! Uncomment one line of code and you have a customizable web interface for administration fully formed and ready for you. By default it allows you to manage users, sites, and application data. You can add records, edit them, view their relationships, search and filter, with form validation built in. It is quite impressive.

As I’ve be learning Django, I’ve been impressed with how easy their templating engine is, and how quickly you can put together a public interface for your applications. It really is very simple to write methods for each view which can then be called by their template. I can’t speak to real world performance yet, but in testing it has been quite snappy, and if the aforementioned benchmark is any indication I can probably expect this trend to continue.

In case you can’t tell, I’m pretty excited about this. I’ve only been playing with Django for a couple days, but I think I may be falling in love. :)

As far as referring to Django as a “Rails killer”, I’m not qualified to make that judgment as I haven’t worked with RoR yet. I will say that I find the tech community’s tendency to refer to every new product as the “[currently_most_popular_product] killer”* really annoying and particularly foolish. There’s room for all of them, and personally I just think that with all these amazing frameworks coming into being it is a great time to be a web developer. Our toolbox runneth over!

Now, if you’ll excuse me, I hear the siren song of Django calling me back to my text editor. :)

*Since I’m learning Python, I guess I should have written that as: "%s killer" % currently_most_popular_product.

Related

Switching To Octopress
·1512 words·8 mins
Articles Assorted Geekery Meta Ruby Octopress Django Development Python Jekyll Hyde
This site is now powered by Octopress. The tentacles compell you! It’s tentacly delicious ! The Search> The Search # As I mentioned in my previous post, I’ve been looking to try out a new CMS for this site.
Quick Post: My Pownces, Let Me Show You Them
·154 words·1 min
Articles Api Assorted Geekery Development Django Pownce Programming Python Social Networking
Heh, I had a little fun this afternoon writing a little Django app for my site that will regularly import my public Pownce notes and allow me to display them in the sidebar.
Newspaper = Data Warehouse: A Different Sort Of Journalism
·688 words·4 mins
Articles Culture Development Django Tech
Adrian Holovaty, one of the creators of Django (which you will read my raves about again and again), has posted a wonderful meditation on how online newspapers need to change. He centers his thoughts on one central point: