Django is one of the best web frameworks out there. Although no project is perfect, any project wanting to best Django has a tough act to follow. Here’s why:

Django is a full stack. This means that while it is possible to replace bits and pieces with other bits and pieces, it provides everything you need by default. Each of the provided pieces is well integrated and works. For example, the auto-generated admin interface is quite a time saver, and is possible only because the forms, templating, authentication, and ORM systems are all working nicely together. Django is trivial to extend. When you are working on a project and you come up with some crazy idea, you can make it real in minutes. Django Middleware allows you to extend how requests are handled. Want to add an HTTP response header that tells you how long it took Django to process the page? Done. Middleware also allows you to modify content. This can be useful for database debugging. Want to add templating commands? Template tags to the rescue. The list goes on and on. Django is written in Python. Python is really easy to learn, and regardless of what you hear, the significant whitespace makes code enjoyable to read. How easy? I hired someone who had never used Python or Django, and they wrote the Chesspark forum in about a week. Other benefits of Python abound. Want a certain view to be locked down? Python’s decorators will help; just add ‘@login_required’ above the view definintion and you’re done. Django has a large and helpful community of users. Got some code snippets to share? Try Django snippets. Have a question? Ask on the mailing list or in the chat room. Look at what those users create at djangosites. They also love to write about Django in their blogs. Django documentation is excellent. It amazes me how good the documentation is. It’s not just “most open source projects documentation sucks so this is infinitely better” good; it is really good. Anytime I have some weird question, it’s almost surely mentioned in the documentation along with an example. Just look at it. It’s huge. This documentation puts many commercial projects to shame, and is something that other open source projects should aspire to. It makes the project accessible to many that probably gave up in frustration using other web frameworks.

If you haven’t looked at Django yet, the overview is a great place to get a feel for it. I highly encourage you to take a peek and see what you’re missing.

The best part of it all is, Django is not even finished! The 0.96 version is very stable and in wide use, but those guys have not been resting on their laurels. The 1.0 version has a tentative date of September 2008, with alpha and beta releases to start in about a month. A lot of the bits and pieces are getting significantly better. You don’t even have to wait for them if you are curious since most of them are completed (or nearly so) in the repository.