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 delve into the process of creating a basic project using MVT in Django. 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. Whether you are a beginner or have some experience with Django, this article will serve as a comprehensive guide to get you started with MVT and empower you to develop your web projects efficiently. So let's dive in and explore the world of Django's MVT architecture!


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

To create a Django project, take the following actions:

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 startapp myapp

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

Step 3: Configure the Project Settings

Open the "" file in the "myproject" directory. You can use whatever text editor you like. This file contains a number of settings for your Django project.

Make sure the following line is present in the "INSTALLED_APPS" list:


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. Go to the "myapp" directory and open the "" file. Here, you can use Python classes to define your models.

For example, let's create a simple model representing a blog post:

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)

Step 5: Create Database Tables

To create the necessary database tables for your models, run the following command:

python makemigrations
python 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 "" file inside the "myapp" directory and define a view function.

For example, let's create a simple view that fetches all blog posts from the database and renders them in a template:

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

Templates play a crucial role in defining the structure and layout of your web pages in Django. Follow these steps to create the necessary templates for rendering your blog posts:

You can use the following code, for instance, as an initial point:

{% for post in posts %}
    <h2>{{ post.title }}</h2>
    <p>{{ post.content }}</p>
    <p>Created at: {{ post.created_at }}</p>
{% endfor %}

In the above code, we use the Django template tag {% for %} to iterate over the posts variable, which represents a collection of blog posts. Inside the loop, we access the attributes of each blog post (title, content, and created_at) using the double curly braces notation ({{ }}).

Feel free to customize the HTML structure and add additional CSS classes, formatting, or any other desired elements to style the appearance of your blog posts.

By creating this template, you have defined how the blog posts will be rendered on the web page. This template will be used by the corresponding Django view to generate the final HTML output dynamically based on the data retrieved from the database.

Remember to save the "blog_posts.html" file after making any modifications.

Step 8: Define URL Patterns

URL patterns determine which view function should be called for a given URL. Open the "" file located inside the "myproject" directory and add the following code:

from django.urls import path
from myapp.views import blog_posts

urlpatterns = [
    path('posts/', blog_posts, name='blog_posts'),

This code maps the URL "/posts/" to the "blog_posts" view function.

Step 9: Run the Development Server

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

python runserver

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


In this article, we learned how to create a basic project using the MVT (Model−View−Template) pattern in Django. By following the provided steps, you can initialize a Django project, define models, implement views, create templates, and set up URL patterns. Django's MVT architecture promotes modular and organized development, ensuring scalability and maintainability. As you gain experience, you can explore advanced features and expand your project's functionality. Remember to consult the Django documentation and online resources for further learning. Now equipped with the knowledge of MVT in Django, you can embark on building impressive web applications. Happy coding! (100 words)

Updated on: 24-Jul-2023


Kickstart Your Career

Get certified by completing the course

Get Started