• 12 hours
  • Medium

Free online content available in this course.



Got it!

Last updated on 3/2/22

Get the Most Out of This Course

Meet Your Teacher

Rafiq Hilali

Rafiq Hilali is a senior full-stack software engineer working with Lambert Labs. Specializing in Python, he has architected and delivered several production-grade Django applications. Originally from the UK, Rafiq uses his career as a developer to travel and work worldwide, from places like Indonesia and New Zealand to the Philippines and Canada.

Understand the Scope of the Course

The scope of what can be considered “intermediate” Django is vast.

This course aims to build on what you can already do (build a basic but functional web application with Django) by introducing you to new concepts.

You will undoubtedly expand your knowledge of these as you continue to gain experience beyond this course.

Learn From a Professional Scenario

In this course, you will create a full web application from start to finish - the context is outlined below:

A photography collective is looking for a way to share its work with the world. They want to be able to upload their photos online and also create blog posts about them. They have asked you, a Django developer, to build a web application that allows them to do just that. They need to have two tiers of users - subscribers and creators - and ensure that only the creators can create content. This content then needs to be shared in a social feed, with subscribers choosing which creators they want to follow.

Actively Follow the Text and Videos

The text and video elements of the course will guide you through building this photoblog. To get the most out of this course, take advantage of both formats:

  • Start each phase of development by watching the screencast video to get an overview of key concepts.

  • Read the text below the screencast to learn how to implement those concepts.

  • Practice alongside by coding the steps yourself. Try not to copy and paste! You will learn more if you write out the code yourself.

  • If you do get stuck implementing anything, refer back to the screencast. Having that visual guide should clear things up and allow you to continue.

Check Your Work

GitHub Repository

This course has an accompanying GitHub repository

Each section of the course has a tagged commit on the repository that refers to it, meaning that you can jump into any section at any time by checking out the tagged commit.

Here you can view the tags


In addition to following the text and video tutorials, you’ll complete coding exercises.

You can find solutions as tagged commits in the repository.

To view the code changes required for the solution, add /compare to the end of the repository URL and compare the PxCxSx-EXERCISE-name-of-exercise tag to PxCxSx-SOLUTION-name-of-exercise tag.

When doing an exercise, avoid the temptation to look at the solution too soon. These exercises are to challenge your understanding. You will gain a lot more from persevering and finding a solution yourself than looking up the answer.

But don’t feel like you have to complete the exercises from memory! It’s great if you find a solution using Google, StackOverflow, or even the official Django documentation! Being able to use these tools is key to greatly improving your developer skills.


At the end of each part, you’ll also complete a quiz to check that you’ve understood the concepts and highlight any areas you need to review. Don’t hesitate to revisit problematic chapters before you advance to the next part.

For now, let’s get working on our photography web application!

Ever considered an OpenClassrooms diploma?
  • Up to 100% of your training program funded
  • Flexible start date
  • Career-focused projects
  • Individual mentoring
Find the training program and funding option that suits you best
Example of certificate of achievement
Example of certificate of achievement