In an early chapter of my upcoming “solid Django” book, I have to explain
Django. How it works, what it is, how it does things. I use several ways. One
of them is the well-known model/view/controller (MVC)
architecture.

Most web frameworks explain themselves in that way and every web framework
sees MVC a bit differently. For Django, for instance, you also see
“model/view/template” as an explanation. I myself think that MVC offers a
pretty helpful way to look at Django. Only, it is pretty hard to explain
right. And I have to leave out quite some details: it is an early chapter. So
I’m leaving out middleware, forms, template tags and so on :-)

Here’s the core of my explanation. If you’ve got any
suggestion/gripe/complaint/praise, please share it as a comment on this
article. That way I can improve my chapter! I’m well aware that you can
explain Django in lots of ways so I want to make sure I don’t foul it up.

Controller. A controller is the heart of the system, it steers
everything. For a web framework, this means handling requests and responses,
setting up database connections and loading add-ons. For this, Django reads
a settings file so that it knows what to load and set up. And Django reads
a URL config file that tells it what to do with the incoming requests from
browsers.

View. The view layer is the user interface. Django splits this up in the
actual HTML pages and the Python code (called views) that renders
them. And it also has an automatic web admin interface for editing the
models.

I’ve also made a video where I’m explaining it this way. I’m experimenting to
find a good setup for making such a video, so it isn’t perfect yet. Especially
the sound can be better, I think.