How to Create a Basic Project using MVT in Django?

Django, a popular web framework written in Python, follows the Model?View?Template (MVT) architectural pattern. MVT is a variation of the well?known Model?View?Controller (MVC) pattern and provides a structured approach to building web applications. Understanding how to create a basic project using MVT in Django is a fundamental step toward developing robust and scalable web applications.

In this article, we will walk you through the essential steps, from setting up the project to defining models, views, templates, and URL patterns. By following this tutorial, you will gain a solid foundation in Django's MVT pattern and be able to build upon it to create more sophisticated applications.

Prerequisites

Before diving into creating a Django project using MVT, make sure you have the following prerequisites:

  • Python: Make sure Python is set up on your computer. Python 3.x versions and Django are compatible.

  • Django: Install Django using the pip package manager. Open your terminal or command prompt and run the command pip install django.

Creating a Django Project

Step 1: Project Initialization

Go to the directory where you wish to build your project by opening your terminal or command prompt. Run the following command once you are in the desired directory ?

django-admin startproject myproject

This will create a new directory named "myproject" with the initial project structure.

Step 2: Create an Application

Change to the project directory by running ?

cd myproject

To create a new Django application within the project, execute the following command ?

python manage.py startapp myapp

This command creates a new directory named "myapp" that will contain your application code.

Step 3: Configure the Project Settings

Open the "settings.py" file in the "myproject" directory. Locate the INSTALLED_APPS list and add your application ?

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myapp',
]

This ensures that your application is included in the project.

Step 4: Define Models

Models are used in Django to specify the layout of your database tables. Open the "models.py" file in the "myapp" directory and define your models using Python classes ?

from django.db import models

class BlogPost(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title

Step 5: Create Database Tables

To create the necessary database tables for your models, run the following commands ?

python manage.py makemigrations
python manage.py migrate

The first command generates the database migration files based on your models, while the second command applies those migrations to the database.

Step 6: Implement Views

Views handle the logic behind handling requests and returning responses. Open the "views.py" file inside the "myapp" directory and define a view function ?

from django.shortcuts import render
from .models import BlogPost

def blog_posts(request):
    posts = BlogPost.objects.all()
    return render(request, 'myapp/blog_posts.html', {'posts': posts})

Step 7: Create Templates

Create a "templates" directory inside your "myapp" folder, then create another "myapp" directory inside "templates". Finally, create a file named "blog_posts.html" ?

<!DOCTYPE html>
<html>
<head>
    <title>Blog Posts</title>
</head>
<body>
    <h1>Blog Posts</h1>
    {% for post in posts %}
        <h2>{{ post.title }}</h2>
        <p>{{ post.content }}</p>
        <p><small>Created at: {{ post.created_at }}</small></p>
        <hr>
    {% endfor %}
</body>
</html>

This template uses Django template tags to iterate over posts and display their attributes using double curly braces notation.

Step 8: Define URL Patterns

First, create a "urls.py" file inside the "myapp" directory ?

from django.urls import path
from . import views

urlpatterns = [
    path('', views.blog_posts, name='blog_posts'),
]

Then, update the main "urls.py" file in the "myproject" directory to include your app's URLs ?

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('posts/', include('myapp.urls')),
]

Step 9: Run the Development Server

To start the Django development server and test your project, run the following command ?

python manage.py runserver

Open your web browser and visit "http://localhost:8000/posts/" to see the rendered blog posts.

Understanding MVT Architecture

The MVT pattern consists of three main components:

  • Model: Defines the data structure and database schema
  • View: Contains the business logic and handles HTTP requests
  • Template: Defines the presentation layer and HTML structure
Model Data Layer View Business Logic Template Presentation HTTP Request/Response User Interaction

Conclusion

By following the MVT pattern in Django, you've learned to create a structured web application with clear separation of concerns. The Model handles data, Views contain business logic, and Templates define the presentation layer. This pattern promotes modular development, making your applications scalable and maintainable as they grow in complexity.

Updated on: 2026-03-27T09:40:29+05:30

614 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements