Skip to main content
Django Basics Tutorial
CHAPTER 03 Beginner

Understanding Django Architecture

Updated: May 14, 2026
20 min read

# CHAPTER 3

Understanding Django Architecture

1. Introduction

If you start typing code without understanding how Django handles data, you will quickly become lost. Most web frameworks use an architecture called MVC (Model-View-Controller). Django uses a slight variation of this called MVT (Model-View-Template). While the names are different, the concept is exactly the same. In this chapter, we will look at the conceptual blueprint of a Django application so you understand exactly how a user's click transforms into a database action and returns a web page.

2. Learning Objectives

By the end of this chapter, you will be able to:
  • Define the MVT (Model-View-Template) architecture.
  • Map the standard MVC pattern to Django's MVT pattern.
  • Trace the Request-Response cycle through a Django application.
  • Understand the specific role of urls.py, views.py, and models.py.

3. Beginner-Friendly Explanation

Imagine a fancy restaurant.
  1. 1. The URL (The Host): A customer walks in and says, "I want table 5." The Host (urls.py) checks the seating chart and directs the customer to a specific Waiter.
  1. 2. The View (The Waiter): The Waiter (views.py) takes the customer's order. The Waiter doesn't cook the food; they manage the logistics. They run to the kitchen and shout the order to the Chef.
  1. 3. The Model (The Chef/Pantry): The Chef (models.py) goes into the pantry (The Database), finds the exact ingredients (Data), prepares the raw meat and vegetables, and hands it back to the Waiter.
  1. 4. The Template (The Plating): The Waiter takes the raw food, puts it on a beautiful ceramic plate, adds garnish, and makes it look presentable (template.html). Finally, the Waiter delivers the beautiful plate back to the customer (The Response).

4. The MVT Architecture Broken Down

Django is strictly separated into three logical components:

#### 1. M - Model (models.py) The Model is the single, definitive source of truth about your data. It contains the essential fields and behaviors of the data you’re storing. Generally, each model maps to a single database table. You write Python code here, and Django translates it into SQL for you.

#### 2. V - View (views.py) In Django, a View is a Python function (or class) that takes a Web request and returns a Web response. Warning: In other frameworks, "View" means the HTML layout. In Django, the "View" is the *Controller*. It contains the business logic. It asks the Model for data, and hands that data to a Template.

#### 3. T - Template (.html files) The Template is the presentation layer. It is an HTML file mixed with special Django tags that allow you to inject the raw data provided by the View into the webpage dynamically.

5. The Request-Response Cycle in Django

Let's trace a user's click from start to finish:
  1. 1. User Request: A user types http://mysite.com/about/ into their browser.
  1. 2. URL Dispatcher (urls.py): Django looks at the URL path (/about/) and searches a list of URL patterns. It finds a match and routes the request to the corresponding View function.
  1. 3. View Logic (views.py): The View function executes. It might calculate math, check if the user is logged in, or ask the Model for data.
  1. 4. Model Query (models.py): (Optional) The View asks the Model, "Give me the company history." The Model fetches it from the database and returns it to the View.
  1. 5. Template Rendering: The View hands the company history data to an HTML Template. The Template injects the data into the HTML tags.
  1. 6. Response: Django takes the finished HTML document and sends it back to the user's browser.

6. Visualizing the Files

When you create a Django project, you will see exactly these files generated for you:
  • urls.py (The Host)
  • views.py (The Waiter)
  • models.py (The Chef)

7. Why Separate Concerns?

Why not write the database query, the HTML, and the URL logic all in one giant file? Because as an application grows to 100,000 lines of code, it becomes impossible to maintain. If the frontend design team wants to change the color of a button, they only need to touch the Template files. They don't have to look at complex Python database logic, reducing the risk of them accidentally breaking the server.

8. Backend Workflow: MVC vs MVT

If you are coming from Laravel, Spring, or Ruby on Rails, you know MVC. Here is the direct translation to Django's MVT:
  • MVC Model = Django Model (models.py)
  • MVC Controller = Django View (views.py)
  • MVC View = Django Template (.html files)

*Do not let the naming convention confuse you. Just remember: In Django, the View is the brains (Controller), and the Template is the face (View).*

9. Best Practices

  • Fat Models, Skinny Views: A professional Django rule. Your views.py should only handle traffic direction. If you have complex data calculations (like calculating a user's total order discount), that logic belongs in models.py. Keep your Views clean and concise.

10. Common Mistakes

  • Writing HTML in views.py: Beginners sometimes use HttpResponse("<h1>Hello</h1>") directly inside their View functions instead of using a Template. While this works for testing, it violates the MVT architecture. HTML belongs strictly in Template files.

11. Exercises

  1. 1. Define the MVT architecture. Explain the specific role of the Model, the View, and the Template in processing a user's request.

12. Coding Challenges

  • Challenge: Draw a flowchart on a piece of paper representing the Django Request-Response cycle. Start with "User Browser" and include boxes for URLs, Views, Models, Database, and Templates. Draw arrows showing the flow of data.

13. MCQs with Answers

Question 1

In Django's MVT architecture, which component acts as the "Controller" containing the core business logic and acting as the middleman between the database and the presentation layer?

Question 2

What is the primary role of the urls.py file in a Django application?

14. Interview Questions

  • Q: Explain the difference between MVC architecture (used by most frameworks) and MVT architecture (used by Django). How do the components map to each other?
  • Q: Describe the phrase "Fat Models, Skinny Views." Why is this considered an architectural best practice in Django?

15. FAQs

Q: Do I have to use Django's Templates? What if I want to use React or Vue.js? A: You are not forced to use Templates! If you want to use React, you simply skip the Template layer. Your Django View will fetch data from the Model and return raw JSON data instead of HTML. We will cover this in Chapter 15 (REST APIs).

16. Summary

In Chapter 3, we explored the foundational blueprint of Django. We learned that Django utilizes the MVT (Model-View-Template) architectural pattern to strictly separate concerns. The urls.py file directs traffic, the views.py file contains the business logic (acting as the controller), the models.py file manages database interactions, and the Templates handle the HTML presentation. Understanding this cycle is the key to mastering Django.

17. Next Chapter Recommendation

Now that we understand the theory, it is time to generate the code. Proceed to Chapter 4: Creating Your First Django Project.

Finish this Chapter

Save your progress on your learning path and prepare for coding interview challenges.

Discussion

Join the discussion

Log in or create a free account to participate.

Sort: ·