Django’s Structure—A Heretic’s Eye View

The most common complaints from those new to Django is “it’s too hard to understand”, or “it’s too complex”. You may even be thinking this yourself right now.

At the fundamental level, Django isn’t complicated. Yes, it has its quirks and, yes, big Django projects can be very complex beasts, but bottom line: Django is a logically structured framework built on the easiest to learn programming language available (Python).

As an educator, I have spent countless hours trying to work out why people find Django complex and hard to learn. Thinking on this has led me to commit heresy #1: it’s not your fault, we’ve just been teaching it wrong.

Remember all the books and tutorials that start with “Django is a Model-View-Controller (MVC) framework…”? (This is cut and paste from one of my books, so I am as guilty as anyone in this).

Stating up front that Django is an MVC framework gets one of two responses:

  1. Beginners say “What the heck is MVC? *groan*. Guess that’s one more fricking thing I have to learn!”
  2. More experienced programmers say “Aha! It’s just like Framework X.”

In both cases, they’re almost entirely wrong.