0–5 min
Real Hook
5–25 min
Core Concept
25–45 min
Live Coding
45–55 min
You Code It
55–60 min
Cheat Sheet
🔥 Real-World Hook (0–5 min)

Before Django: building a Python web app meant manually parsing HTTP headers, managing database connections, and writing your own session system — weeks of work just to show a webpage.

After Django: 3 commands and your app is running. Instagram was built on Django. Disqus serves 500 million users on Django. Pinterest, Mozilla, Bitbucket — all Django. Today you build your first real web app.

🋍 Django's MVT Architecture (5–25 min)

💡 Analogy — Django is a Restaurant

Model — The kitchen (stores and manages data in the database).
View — The waiter (receives request, fetches data, returns response).
Template — The menu/plate (how data is presented to the user).
URL — The front door (which URL goes to which view).

💻 Live Coding — First Django App (25–45 min)

# Step 1: Create project
pip install django
django-admin startproject studentproject .
python manage.py startapp students

# Step 2: models.py ── define your data
from django.db import models

class Student(models.Model):
    name  = models.CharField(max_length=100)
    email = models.EmailField(unique=True)
    dept  = models.CharField(max_length=50)
    gpa   = models.DecimalField(max_digits=3, decimal_places=2, default=0.0)
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return f"{self.name} ({self.dept})"

    class Meta:
        ordering = ["-gpa"]   # default sort: highest GPA first
# Step 3: views.py ── handle requests
from django.shortcuts import render
from .models import Student

def student_list(request):
    students = Student.objects.all()          # Django ORM: SELECT * FROM students
    return render(request, "students/list.html", {"students": students})

def student_detail(request, pk):
    student = Student.objects.get(pk=pk)      # SELECT WHERE id=pk
    return render(request, "students/detail.html", {"student": student})
# Step 4: urls.py
from django.urls import path
from . import views

urlpatterns = [
    path("students/",       views.student_list,   name="student-list"),
    path("students//", views.student_detail, name="student-detail"),
]

# Step 5: Run migrations and start server
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver            # http://127.0.0.1:8000
🎯 You Code It (45–55 min)
  1. Create a new Django project: django-admin startproject myapp .
  2. Create app: python manage.py startapp products
  3. Define a Product model: name, price (DecimalField), category, in_stock (BooleanField)
  4. Add to INSTALLED_APPS in settings.py, run makemigrations + migrate
  5. Register Product in admin.py, create a superuser, go to /admin
  6. Add 5 products via the Django admin panel
  7. Show: Admin panel with 5 products visible

📄 Day 7 Cheat Sheet — Django Basics

Django Commands

django-admin startproject name .New project
python manage.py startapp nameNew app
python manage.py makemigrationsDetect changes
python manage.py migrateApply to DB
python manage.py createsuperuserAdmin user
python manage.py runserverStart server

Model Fields

CharField(max_length=100)Short text
TextField()Long text
IntegerField()Whole number
DecimalField(max_digits,decimal_places)Price
BooleanField(default=True)True/False
DateTimeField(auto_now_add=True)Timestamp

URL Patterns

path("url/", view, name="")Simple URL
path("url/<int:pk>/", view)Integer param
path("url/<str:slug>/", view)String param
include("app.urls")Include app URLs
reverse("name")URL from name

settings.py Essentials

INSTALLED_APPSAdd your app here
DATABASESDB connection
STATIC_URLCSS/JS location
TEMPLATESHTML template config
SECRET_KEYNever commit this!
DEBUG = FalseIn production