DjangoCon Europe 2023

Model-View-Controller (MVC) through the ages and in Django
2023-05-29 , Music Hall

MVC is an architectural pattern with a 50-odd year history that also left an imprint on Django. Can its continuing relevance teach us something about fundamental software design principles?


Video: https://youtu.be/fuGWGv89JlY

Model-View-Controller (MVC) is a widely used architectural pattern. It helps us separate the representation of data (the model) from the presentation of that data (the view) and the communication between those two and a user (the controller). The pattern has a 50-odd year history in such disparate systems as Smalltalk (the 70s), Java Swing (the 90s) and - of course your favorite, Django (the noughties onwards).

How come such an ancient pattern is still relevant today? In this talk I will explain how MVC's prevalence points at some fundamental design principles in software engineering. I will also explore its various applications through history and how it left an imprint on Django. Yes, Django implements MVC, or at least something derived from it, even if it got some of the naming horribly, confusingly wrong. (A Django "view" might more accurately be called a controller.)

You will come away from this talk with a better understanding of some fundamental design principles in Django and how this can help you keep your code clean and extensible.

Nik has been building websites since the 90s, some of them with Django since the early 2010s. He's
currently the CTO of Lindus Health, a London-based startup using lots of Django.