A heavily commented Django project dedicated to teaching the framework or refresh one's memory.
Python JavaScript HTML CSS
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Django, an app at a time

A heavily commented Django project dedicated to teaching the framework or refresh one's memory. Each app demonstrates a few essential Django features so you can see how it all fit together by looking at the code and testing the result in your browser. There is nothing do except run and read.


  • Project : see how settings and urls.py work
  • App 1: hello world
  • App 2: hello again
  • App 3: basic routing
  • App 4: creating links
  • App 5: GET, POST and cookies
  • App 6: templates, tags and filters
  • App 7: static files
  • App 8: reusable app

What's to come:

  • ORM
  • Forms
  • Authentification
  • Admin
  • Command
  • Translations

How to use?

Download and extract this project, and run:

python ./manage.py runserver

You can ignore the "You have 15 unapplied migration(s)." warning.

You don't need to install anything.

Go to the URL and play with the apps.

When you want to see how it works, go to the "apps" directory and watch the commented source code.

Each app assumes you understand the previous ones, and contains a README to guide you.

Download links:

What's in there?

  • "apps" : contains all the applications, sorted by complexity and requirements. This is what you want to read.
  • "project": the Django project itself, containing settings and the main URL routes definition. You should have a look in there from time to time, it puts the apps in context and contains some tips.
  • "libs": dependencies such as Django or external libraries that you would have to install otherwise. You don't need to, but you can look into it once you start feeling comfortable with Django.
  • "libs/ignore_me": the app that lists all the apps, and the main page of the project. You can ignore it, it's not very interesting.
  • "manage.py": the command to interact with the Django project. This one is a bit modified so don't replace it.
  • ".gitignore": a configuration file for git. You don't need this for Django. It's here to help me.


In a real project, you WOULD have to install something. Dependencies are provided here for convenience, dumped in libs/, but you would definitely use pip and virtualenv in a real project.

By the way, this is NOT a tutorial. The purpose is not to replace a full course about how Django works, but rather to give you a concrete example on how each task can be achieved with Django.

Translations and spell corrections welcome!