Although the awesomeness of Django has been well documented, I thought I would share my thoughts on my recent Django project.

Despite my desire to, I have never really done much web development. I finally decided to just dive in. I had heard lots of buzz about Ruby on Rails so I started researching Rails. I watched a couple of screencast and went through the Rails for Zombies course. I can't put my finger on it but something just wasn't clicking for me. It's almost like Rails was too magical, I couldn't put the pieces together. Perhaps if I would have stuck with Rails things would have started to come together but while struggling with Rails, Django popped onto my radar. Django made sense to me from the get go.

Django Logo Image Credit: Django Project

What Makes Django Cool

Django's goal, like all web frameworks, is to do the repetitive bits of web development for you so that you can focus on the fun stuff. I think Django does a great job at this. Below are some of my favorite things about Django. For a better description check out the official overview

Documentation

Djangos documentation is top notch. This is how documentation should be written. Rather than, "here is thing X, here is another thing called Y..." Django's documentation is written as "to accomplish useful thing X do Y".

Python

I really like Python. There is some truth to this comic.

Testable

It is obvious that Django was built with testing in mind. My Django project is the first project that I have ever written tests for. Even a testing noob like me had no problem getting up to speed with Django testing. Warning, testing can be addictive.

ORM

In Django you simply define your models as Python classes and Django will handle all the SQL for you. Your fields automatically get validation. When it comes time to interact with your data, you get a powerful API for free. I am well into a project and have not written any SQL yet. Hazzah!

Admin Interface

Often times there are things you need to do to your data that don’t necessarily warrant building an interface for. Django will generate a decently attractive and very powerful admin interface for you.

Pretty URLs

Pretty:     joshgraham.com/post-title/
Not Pretty: joshgraham.com/jdfs89juiht75ersfasdfjklsfdljk.aspx 

Django gives you the flexibility to keep you URLS pretty. Additionally, your URL is not tied to the framework the page was built with.

Templates

Django has a nice, simple, template system that encourages you to keep your business logic out of the template layer (because business logic does not belong there).

Migrations

I have not gotten a chance to play with migrations yet but the release of Django 1.7 brings built in schema migrations!

Ultra Simple RESTful APIs

Django REST Framework is an extremely nice way to build an API. Even you hip cats who think building the complete page server side is archaic can use Django.

Getting Started

The best place to start with Django is the tutorial. There is also an installation guide if you need help there. In the tutorial you will build a simple polls application. Once you finish the tutorial you will have a decent idea of how Django works.

Pick a Project and Go

If you think that Django is an interesting web framework, pick a project and try it. I found that, as a desktop .NET developer by day, learning Django at night was great fun! My project is called Handprints check it out if you are interested.