Back to Python
2026-03-265 min read

Django (Python Programming)

Learn Django (Python Programming) step by step with clear examples and exercises.

Why This Matters

Django is a powerful and versatile web framework built using Python, designed to simplify web development by providing reusable components and built-in features like authentication, database connectivity, and CRUD operations. This tutorial will walk you through the core concepts of Django, including its architecture, models, views, templates, URL routing, and more, to help you build dynamic and secure web applications efficiently.

Why This Matters

Django is a popular choice for building modern web applications due to its simplicity, scalability, and security features. By understanding Django's principles and best practices, you can save time and effort in developing web applications while ensuring they are secure, maintainable, and easy to scale. Furthermore, having experience with Django can make you a more attractive candidate for job opportunities in the field of web development.

Prerequisites

To follow this tutorial, you should have a good understanding of Python programming concepts, including data types, functions, classes, and modules. Familiarity with HTML and CSS is also beneficial but not required, as Django provides a templating engine to separate your HTML from the Python code.

Core Concept

Architecture

Django follows the Model-View-Template (MVT) design pattern, which separates the application logic into three interconnected components: models, views, and templates.

  1. Models: Represent the data you want to display, typically sourced from a database. Django's Object-Relational Mapper (ORM) handles data migrations and queries.
  2. Views: Handle incoming requests and return the appropriate template and content based on the user's request. There are two main types of views: Function Based Views (FBVs) and Class Based Views (CBVs).
  3. Templates: A text file that defines the structure of the web page and includes logic for displaying the data. Django's templating system allows you to separate your HTML from Python code, making dynamic content easy to manage.

Installation

To install Django on your system, use the following command:

pip install django

Once installed, create a new Django project using the django-admin startproject command:

django-admin startproject myproject
cd myproject

Create a new app within your project:

python manage.py startapp myapp

Running the Server

Start the development server by running the following command:

python manage.py runserver

Now, open your web browser and navigate to http://127.0.0.1:8000/ to view your Django application.

Worked Example

In this example, we will create a simple blog application that allows users to view posts and add new ones.

Models

Create a new file named models.py in the app directory (myapp) and define the Post model:

from django.db import models

class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)

Migrations

Run the following command to create the database schema based on your model:

python manage.py makemigrations myapp
python manage.py migrate

Views

Create a new file named views.py in the app directory and define the PostListView and PostDetailView classes:

from django.views.generic import ListView, DetailView
from .models import Post

class PostListView(ListView):
model = Post
template_name = 'myapp/post_list.html'

class PostDetailView(DetailView):
model = Post
template_name = 'myapp/post_detail.html'

URLs

Create a new file named urls.py in the app directory and define the URL patterns:

from django.urls import path
from .views import PostListView, PostDetailView

urlpatterns = [
path('', PostListView.as_view(), name='post_list'),
path('<int:pk>/', PostDetailView.as_view(), name='post_detail'),
]

Templates

Create two HTML templates, post_list.html and post_detail.html, in a new directory named templates within the app directory (myapp/templates/myapp).

Common Mistakes

  1. Not adding 'myapp' to INSTALLED_APPS: Ensure that your app is included in the project's INSTALLED_APPS list in the settings file (myproject/settings.py).
  2. Forgetting to run migrations: Always run python manage.py makemigrations and python manage.py migrate after creating or modifying models.
  3. Using the wrong template name: Ensure that the correct template is specified for each view in the views file (views.py).
  4. Not defining URL patterns: Make sure to define URL patterns for your views in the app's urls.py file.
  5. Hardcoding URLs: Avoid hardcoding URLs in templates; instead, use Django's built-in template tags to generate URLs dynamically.

Practice Questions

  1. How can you create a new user in Django?
  2. What is the purpose of the models.py file in a Django app?
  3. How do you define a custom template for a view in Django?
  4. Explain the difference between Function Based Views (FBVs) and Class Based Views (CBVs) in Django.
  5. What is the purpose of the admin.py file in a Django app?

FAQ

  1. Why use Django's ORM instead of writing raw SQL queries? Using the ORM allows you to interact with your database more efficiently and securely, as it handles many common tasks like migrations, data validation, and query optimization automatically.
  2. What is the purpose of the settings.py file in a Django project? The settings file contains various configuration options for the project, such as database settings, installed apps, middleware, and more.
  3. How can I customize the built-in admin interface in Django? You can create custom admin models by subclassing django.contrib.admin.ModelAdmin and overriding its methods to define how your model should be displayed and managed in the admin interface.
  4. What is the purpose of the urls.py file in a Django project? The URL configuration file defines the URL patterns for your application, mapping URLs to views that handle incoming requests.
  5. How can I deploy my Django application to a production environment? To deploy your Django application to a production environment, you can use various hosting services like Heroku or AWS, or set up your own server using tools like Gunicorn and Nginx.
Django (Python Programming) | Python | XQA Learn