Django Python Web Framework
June 2, 2026 4 min read

Django in one shot tutorial - Smart web development

Hs
Hemant singh
Technical Writer & Educator

Install Python and Pip

Check Python and pip versions:

python --version
pip --version

Download Python: https://www.python.org/downloads/

Create New Virtual Environment

python -m venv env
  • python: Runs the Python interpreter.
  • -m venv: Tells Python to run the venv module (used to create virtual environments).
  • env: The name of the virtual environment folder (can be anything like env.venvmyenv).

Activate the Virtual Environment

env\Scripts\activate

This tells Windows to use the Python interpreter and packages inside the env folder, instead of the global Python on your system.

After activation, command prompt will change to something like:

(env) C:\Users\Hemant\Desktop\django-projects>

Install Django

pip install django

Check Installation

django-admin --version

Create a Django Project

django-admin startproject mysite
cd mysite
python manage.py runserver
  • manage.py: A command-line utility Django creates for every project.
  • runserver: Starts the built-in development server to test your site locally.
python manage.py runserver 8080 (optional port)

Folder Structure

myproject/
├── manage.py
└── myproject/
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    ├── asgi.py
    └── wsgi.py

Explanation

  • Outer myproject/: Project root containing settings and manage.py.
  • manage.py: CLI tool for Django.
  • Inner myproject/: Contains actual project config files:
    • __init__.py: Makes the folder a Python package.
    • settings.py: Main project settings.
    • urls.py: Root URL router.
    • asgi.py: For asynchronous deployment.
    • wsgi.py: For WSGI deployment.

Create a New App

python manage.py startapp blog

Add the app to INSTALLED_APPS in settings.py:

INSTALLED_APPS = [
    ...
    'blog',
]

App Routing

Create urls.py in the blog app if not present:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.home),
]

Views

Edit views.py to define your route:

from django.shortcuts import render
from django.http import HttpResponse

def home(request):
    return HttpResponse("Hello World")

Register App Routes to Main Project

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

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

Use Templates to Render HTML

Create a folder templates inside the blog app and add HTML files like home.html.

Update the view to render the HTML:

def home(request):
    return render(request, 'home.html')

Submit Form in Django

  1. Ensure all inputs have name attribute.
  2. Include CSRF token: {% csrf_token %}
  3. Check method:
if request.method == "POST":
  1. Get input values:
name = request.POST.get("name")
  1. Format string:
print(f"name {name}")

Connect Django to MySQL

pip install mysqlclient

Update settings.py:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'pyt',
        'USER': 'root',
        'PASSWORD': '12345',
        'HOST': '127.0.0.1',
        'PORT': '3311',
    }
}

Create Models

from django.db import models

class Category(models.Model):
    name = models.CharField(max_length=20, unique=True)

class Post(models.Model):
    category = models.ForeignKey(Category, on_delete=models.PROTECT)
    title = models.CharField(max_length=100)
    body = models.TextField()
    created_on = models.DateTimeField(auto_now_add=True)
    last_modified = models.DateTimeField(auto_now=True)

Run Migrations

python manage.py makemigrations
python manage.py migrate

To modify database (add/remove fields):

python manage.py makemigrations
python manage.py migrate

Session in Django

  • Create: request.session['username'] = 'ct'
  • Get: username = request.session.get('username', 'Guest')
  • Delete: del request.session['username']

Cookies in Django

  • Create: response.set_cookie('name', 'ct', max_age=3600)
  • Get: name = request.COOKIES.get('name')
  • Delete: response.delete_cookie('name')

Django Authentication

(Continue this section based on what you want to include — login, logout, user creation, etc.)