A great two years

It's our two-year anniversary!

Django was open-sourced exactly two years ago today, on July 15, 2005.

The past two years have been tremendous. If you're just starting to use Django, you're probably not aware of the huge improvements we've made since the framework was open-sourced:

Two years ago, we didn't have an internationalization framework.

Two years ago, models looked like this:

class Package(meta.Model): db_table = 'packages' fields = ( meta.CharField('label', 'label', maxlength=20, primary_key=True), meta.CharField('name', 'name', maxlength=30, unique=True), ) ordering = (('name', 'ASC'),) def __repr__(self): return self.name

Two years ago, we didn't have the render_to_response() shortcut. You had to load templates manually using get_template() , create a Context and call t.render(c) .

Two years ago, we didn't have manage.py runserver . The only way to deploy, or even test, Django code was to set up mod_python! (We changed that pretty quickly.)

Two years ago, we didn't have a way to do sessions.

Two years ago, we didn't have support for database transactions.

But even more striking than these changes is the fact that the framework's general design has remained consistent. Despite loads of new shortcuts and functionality, it still boils down to URLconfs, models, views and templates. If you beamed in a Django developer from the year 2005 and showed her the July 2007 Django trunk, she would more-or-less understand how it worked.

Here's to the future. Thanks for using and improving Django!