Django, a 10-part series
Who this series is for
- New to Django → start at Part 1 and work through in order.
- Have shipped a Django app but don’t feel expert → jump to Parts 7–10.
- Preparing for a senior backend interview → Parts 7, 8, and 10 cover the ORM, caching/N+1, and production concerns that get asked.
Each part is standalone enough to read on its own, but later parts assume you understand the primitives introduced earlier.
The parts
- Part 1, Project setup and the MVT pattern (beginner)
- Part 2, Models, migrations, and the ORM (beginner)
- Part 3, Views, URLs, and templates (beginner)
- Part 4, Forms and user input (beginner → intermediate)
- Part 5, Authentication and authorization (intermediate)
- Part 6, Django REST Framework basics (intermediate)
- Part 7, Advanced ORM: QuerySets, Q/F, prefetching, aggregation (intermediate → advanced)
- Part 8, Caching, performance, and the N+1 problem (advanced)
- Part 9, Async Django, Channels, and Celery (advanced)
- Part 10, Production: deployment, security, observability (expert)
Versions this series targets
- Django 5.x (LTS 5.2)
- Python 3.11+
- PostgreSQL 15+ for production examples (SQLite fine for local dev)
- Django REST Framework 3.15+
- Celery 5+, Redis 7+
Django 5 introduced several changes from Django 3/4 era articles you’ll find on the web, async ORM methods, GeneratedField, simplified form rendering. Where something changed, I’ll flag it inline.
How I’d actually learn Django today
Paraphrasing what works well for most engineers I’ve seen ramp up:
- Build a toy CRUD app through Parts 1–4.
- Add auth (Part 5) and expose it as an API (Part 6).
- Skim Part 7 and return when you hit a slow query.
- Read Parts 8–10 before you deploy, not after.
References that apply to every part
- Django documentation, the single best resource; consult the version matching your install
- Django source on GitHub, the source is surprisingly readable; don’t be afraid to click through
- Awesome Django, curated packages and tutorials
- Django Forum, for questions beyond Stack Overflow