More about Django

About this course

You have finished the Django Girls tutorial. You have a blog with a Post model, a few function views, some templates, the Django admin and a deployment on a PaaS platform. And then comes the hardest question of all: what now?

This course is the answer. It never re-teaches the Django Girls material - it starts at the exact point where that tutorial stops and takes the same blog project all the way to a real, maintainable, secure and deployable web application.

Every lesson is short and focused, comes with written notes and a YouTube recording. Videos are published gradually, so lessons without a recording yet simply show a placeholder.

Curriculum

Module 0 - Starting line

A short recap of what the Django Girls tutorial left you with, the shared starter repository and a git workflow for the rest of the course.

Module 1 - From tutorial project to a real project

Turn the single-app blog from the tutorial into a project layout that can grow. You move secrets out of settings, split development from production and automate code style.

Module 3 - Class-based views

Rewrite the Django Girls function views as class-based views and get pagination, forms and CRUD almost for free. You also learn when a plain function is still the better choice.

Module 4 - Users, authentication and permissions

Give the blog real accounts: registration, login, password reset and profiles. You also learn who is allowed to edit what, with permissions and groups.

Module 5 - Forms and user-generated content

Everything your readers send to the server: comments, uploads and edits. You validate it, moderate it and give clear feedback when something goes wrong.

Module 6 - Templates and a modern frontend

Make the blog look and feel like a finished product. Template structure, custom tags, static files, a dark mode and interactive pages with HTMX instead of a SPA.

Module 7 - Search, feeds and SEO

Help people and search engines find your posts. From a simple icontains filter to PostgreSQL full-text search, plus feeds, sitemaps and sensible metadata.

Module 8 - Testing and continuous integration

Stop testing by clicking around. You write tests for the blog with pytest-django, measure coverage and run the whole suite automatically on every push.

Module 9 - Performance and caching

Find out what is slow before you optimise anything. You profile the blog, tune the database and add caching at the level where it actually pays off.

Module 10 - Background tasks with Celery

Move slow work out of the request cycle. You set up Celery with Redis, send email in the background, schedule recurring jobs and watch what the workers are doing.

Module 11 - Building an API

When server-rendered pages are not enough, you expose the blog data as an API. Django REST Framework, authentication, documentation and a look at Django Ninja.

Module 12 - Async and real-time (bonus)

A practical introduction to async Django. What async views can and cannot do with the ORM, and how to push live updates to the browser with Channels.

Module 13 - Security hardening

Go through the settings and habits that keep a public Django site safe. The deployment checklist, HTTPS, CSP, form abuse protection and the classic web vulnerabilities.

Module 15 - Capstone

Turn the course project into something of your own. You scope a feature set, review your code like a senior developer would and plan what to learn next.

Who it is for

  • Django Girls graduates who do not know what to learn next
  • Self-taught developers with a first Django project already running
  • Backend beginners who want production habits, not just tutorials
  • Anyone who wants to leave a PaaS and run Django on their own server

Prerequisites

  • Completed the Django Girls tutorial (or an equivalent beginner course)
  • Comfortable with basic Python: functions, classes, lists and dicts
  • A working local Python installation and a code editor
  • A GitHub account and the basics of git (clone, commit, push)

What you will learn

  • Structure a Django project so it survives growing beyond one app
  • Model real domains with relations, migrations and efficient queries
  • Replace function views with class-based views where it pays off
  • Add authentication, permissions and user-generated content safely
  • Test your code and run those tests automatically on every push
  • Measure and improve performance with caching and query tuning
  • Move slow work into Celery background tasks
  • Expose a REST API when your project needs one
  • Harden a Django deployment and ship it to your own server

Tools

Django 5/6 PostgreSQL Redis + Celery Docker and docker compose pytest-django and coverage.py Nginx, Gunicorn and Uvicorn GitHub Actions