Sorry, this page is no longer available
Sorry, this page is no longer available
Sorry, this page is no longer available
We may earn an affiliate commission when you visit our partners.
Course image
Mark Winterbottom and Brooke Rutherford

Welcome to the advanced course on how to Build a Backend2), Django REST Framework (3.12), Docker, GitHub Actions, Postgres and Test Driven Development.

Whether you’re a freelance programmer, tech entrepreneur, or just starting out building backends - this course will help lay the foundation of your knowledge base and give you the tools to advance your skills with some of the most in-demand programming languages today.

APIs are the unsung heroes behind the technologies that we all love and use religiously.

Read more

Welcome to the advanced course on how to Build a Backend2), Django REST Framework (3.12), Docker, GitHub Actions, Postgres and Test Driven Development.

Whether you’re a freelance programmer, tech entrepreneur, or just starting out building backends - this course will help lay the foundation of your knowledge base and give you the tools to advance your skills with some of the most in-demand programming languages today.

APIs are the unsung heroes behind the technologies that we all love and use religiously.

One of the most critical components for any tech-based business is an API. So knowing how to create an API from start to finish is a vital skill to have as a developer. You cannot build a successful app without a backend REST API.

In this course I’ll show you how to build an advanced API that handles creating and updating user profiles, changing passwords, creating objects, uploading images, filtering and searching objects, and more.

The best way to learn anything is to do it. So the practical application of the course the project that you’ll build along side me is an API. A recipe API, to be specific.

You will learn how to build an advanced recipe API that allows you to upload and store some of your favourite recipes from photos and the web.

You’ll learn how to create objects i.e. recipes with titles, price points, cooking times, ingredients and tags like “comfort food”, “vegan” or “dessert”. Think of it as a virtual recipe box.

By the end of this course you will have built a fully functioning

This course is

The content is challenging but rewarding. Ready for it? Let’s dive in.

This is because Windows 10 Pro or Enterprise is required in order to use Hyper-V which Docker uses for virtualization. To take this course you have two options. These are covered in Lecture 6, which is free to preview before purchasing the course.

Enroll now

What's inside

Learning objectives

  • Setting up a local development server with docker
  • Writing a python project using test driven development
  • Building a rest api with advanced features such as uploading and viewing images
  • Creating a backend that can be used a base for your future projects or mvp
  • Hands on experience applying best practice principles such as pep-8 and unit tests
  • Configure travis-ci to automate code checks

Syllabus

Introduction to the course.

What you will need in order to take this course.

Introduction to the course which explains everything you need to know before getting started.

Read more

Overview of the course structure

How to get help if you get stuck when following the steps in this course.

Overview of the app we will be building in this course.

Technologies which we will use to build our app.

How we will structure our Django project

Lesson on Test Driven Development (TDD) and why it's so important.

All of the tools we'll be installing.

How to check that everything has been installed successfully.

Explains how we will structure the project.

Create a new project on GitHub.

Explains how we will use Docker to run our Django project.

Define the Python requirements we will need for our project.

Create a new Dockerfile for our project.

Create a new Docker Compose configuration.

Explains how the linting and tests will work with our project.

Configure flake8 to do our linting.

Create a new Django project through Docker Compose.

Run our project using Docker Compose.

Overview of what we did in this section.

Explains what GitHub Actions is and how we will use it for our project.

Explains how GitHub Actions configuration works.

Configure GitHub Actions for our project.

Test GitHub actions by deliberately breaking and then fixing our code.

Learn how testing works with Django.

Write a basic unit test.

Write a basic unit test using the TDD process.

Learn about mocking.

Common issues when running tests.

How we will configure our database architecture for development.

Add a database service to our Docker Compose configuration file.

Learn how database configuration works with Django

Install the PostgreSQL adaptor.

Configure our Django project to use database service.

Explains the database race condition issue.

Create a "core" app for containing our shared app code.

Write unit tests for our wait_for_db spec.

Implement wait_for_db command.

Learn how to handle database migrations with Django and Docker.

Modify project configuration to use our new wait_for_db command.

Summarise what we did in the database configuration section.

How we will integrate our Django user model.

Design overview for the custom user model we will be building.

Create a test for our user model.

Implement our user model to make tests pass.

Normalise email addresses to avoid issues with capitalisation.

Require that an email address is provided to the function.

Add support for creating superusers through the CLI.

Test the new user model in the CLI

Summarise what we did in the Create User Model section.

Explains what the Django admin is and how we will use it.

Write tests for listing users in the Django admin.

Update the Django admin to list users.

Update Django admin to support modifying users.

Add support for creating users through the Django admin.

Learn about the importance of API documentation.

Auto generated docs with Django REST Framework

Update requirements to install drf-spectacular.

Add URLs for API docs.

Test swagger UI in the browser.

Summary of what we learned in the API Documentation section.

Design of our user API.

Write tests for create user API

Implement the create user API

Overview of authentication we will be using.

Write tests for the token generation API

Implement the token API

Write tests for modify user endpoint.

Implement modify user endpoint.

Test the authentication using the browsable documentation.

Summary of what we learned when building the user API.

Design our recipe API.

Learn about APIView and Viewsets with Django REST Framework.

Write tests for adding a recipe model to the project.

Implement the recipe model.

Create a recipe app in our project.

Write tests for listing recipes.

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Covers Docker, GitHub Actions, and Postgres, which are essential tools for modern backend development and deployment, enabling learners to build and manage scalable applications
Emphasizes Test Driven Development (TDD), a crucial practice for writing robust and maintainable code, ensuring that learners adopt industry best practices from the outset
Utilizes Django REST Framework (DRF) 3.12, a widely-used and powerful toolkit for building RESTful APIs, providing learners with practical skills applicable to real-world projects
Requires Windows 10 Pro or Enterprise to use Hyper-V for Docker virtualization, which may pose a barrier for learners using other operating systems or versions
Focuses on building an advanced recipe API with features like image uploading, filtering, and searching, offering learners a practical project to showcase their skills
Teaches PEP-8 conventions and unit tests, which are essential for writing clean, maintainable, and testable code, promoting professional development practices

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Advanced python/django rest api with docker & tdd

According to learners, this course provides a practical, hands-on approach to building a backend REST API using Python and Django. Students particularly praise the inclusion of modern development practices such as Test Driven Development (TDD), Docker, and GitHub Actions, finding them highly relevant for real-world projects. The step-by-step process of building a Recipe API is highlighted as a major strength, enabling learners to apply concepts directly. While many find the content challenging yet rewarding, some mention that the 'Advanced' label might imply a deeper dive into optimization or complex architecture than the course provides, suggesting it's potentially best suited for those solidifying intermediate skills rather than true experts. A few encountered difficulties with the initial Docker setup depending on their operating system.
Generally clear, but some parts could be deeper.
"The instructor explains complex topics like Docker Compose clearly, making them understandable."
"Some parts felt rushed, especially when explaining certain DRF features. Had to look up documentation myself."
"Good coverage of the basics needed to get an API running, but don't expect deep dives into every single topic."
Covers TDD, Docker, and GitHub Actions workflow.
"Loved learning how to integrate Docker and GitHub Actions into the workflow. This feels very industry-relevant."
"The focus on TDD really shifted my perspective on writing code. It's a challenging but valuable skill taught well here."
"Appreciated the inclusion of Docker and CI/CD setup. These are essential skills today."
Hands-on API building is highly beneficial.
"Building the recipe API step-by-step was incredibly helpful. I feel ready to tackle my own projects now."
"The practical application through the recipe API project is the strongest aspect for me. It ties everything together."
"I learned so much by actually building something tangible. The project structure is well thought out."
Initial Docker setup can be difficult for some.
"Getting the Docker setup right on my machine was a real pain. Spent hours troubleshooting before the course even started."
"Encountered some issues with Docker depending on my Windows version, but the provided solutions helped eventually."
"Be prepared to troubleshoot the initial environment setup, especially if new to Docker."
May not meet expectations for truly advanced learners.
"I found the 'Advanced' label a bit misleading. It covers intermediate concepts well, but I expected more depth on performance or complex architecture."
"While the course is good, it felt more like a solid intermediate-to-advanced bridge rather than deeply advanced material."
"If you're already quite proficient, some sections might feel basic, but it's great for consolidating knowledge."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Build a Backend REST API with Python & Django - Advanced with these activities:
Review Docker Fundamentals
Solidify your understanding of Docker concepts before diving into the course's Docker-heavy setup. This will make the initial project configuration much smoother.
Browse courses on Docker
Show steps
  • Review Docker images, containers, and Dockerfiles.
  • Practice building and running simple Docker containers.
  • Familiarize yourself with Docker Compose.
Brush Up on Django REST Framework Basics
Revisit the core concepts of Django REST Framework to better understand the advanced API building techniques taught in the course. This will help you grasp the more complex features more easily.
Browse courses on Django Rest Framework
Show steps
  • Review serializers, views, and API endpoints.
  • Practice creating simple APIs with DRF.
  • Study authentication and permissions in DRF.
Read 'Test-Driven Development with Python'
Deepen your understanding of Test-Driven Development (TDD) principles, which are heavily emphasized in the course. This will enable you to write more effective and reliable tests for your API.
Show steps
  • Read the book and understand the TDD workflow.
  • Practice writing tests before implementing features.
  • Apply TDD principles to a small Django project.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Implement API endpoints
Reinforce your understanding of API design and implementation by building additional endpoints for the recipe API. This will give you hands-on experience with the concepts taught in the course.
Show steps
  • Add endpoints for filtering recipes by ingredients.
  • Implement endpoints for sorting recipes by cooking time.
  • Create endpoints for user reviews and ratings.
Write a blog post on API authentication
Solidify your knowledge of API authentication methods by explaining the different approaches and their trade-offs in a blog post. This will help you internalize the concepts and communicate them effectively.
Show steps
  • Research different API authentication methods.
  • Write a blog post explaining the methods and their pros and cons.
  • Publish the blog post on a platform like Medium or Dev.to.
Contribute to a Django REST Framework project
Deepen your understanding of Django REST Framework by contributing to an open-source project. This will expose you to real-world codebases and best practices.
Show steps
  • Find a Django REST Framework project on GitHub.
  • Identify a bug or feature to work on.
  • Submit a pull request with your changes.
Build a personal portfolio API
Apply the skills learned in the course to build a personal portfolio API. This will allow you to showcase your projects and skills to potential employers.
Show steps
  • Design the API endpoints for your portfolio.
  • Implement the API using Django REST Framework.
  • Deploy the API to a cloud platform like Heroku or AWS.

Career center

Learners who complete Build a Backend REST API with Python & Django - Advanced will develop knowledge and skills that may be useful to these careers:
API Developer
An API Developer specializes in designing, building, and managing Application Programming Interfaces (APIs). This course is directly aligned with the core responsibilities of an API Developer. The course teaches in detail how to build a REST API using Python and Django REST Framework. The API creation skills taught by this course will be essential for anyone looking to work as an API Developer. The process of creating user profiles, managing passwords, and handling image uploads within the API are typical tasks handled by an API Developer. The course's focus on test driven development and using tools like Docker for containerization further enhance the value of this course for an API Developer. A major project of this course is to build an advanced recipe API, which provides candidates with considerable experience in building and testing APIs.
Backend Developer
A Backend Developer creates and maintains the server-side logic of web applications and systems. This role requires strong skills in building and managing APIs, which are the core of a backend system, making this course particularly relevant. The course emphasizes creating REST APIs with Python and Django, and also covers essential concepts such as test driven development, Docker, and database management using Postgres. These are all highly valuable for anyone looking to work as a Backend Developer. The hands-on project to build an advanced recipe API, including object creation, image uploads, and filtering, translates directly to the tasks a Backend Developer typically handles. The course's inclusion of best practices like PEP-8 and unit tests, as well as use of GitHub Actions for code checks, prepares a candidate for the standards expected in professional software development.
Software Engineer
A Software Engineer designs, develops, and maintains software systems and applications. This course aligns well with the practical skills required for this role. The course's focus on building a REST API with Python and Django provides a substantive foundation for any Software Engineer. A Software Engineer often works on backend systems and databases, and this course helps build a foundation. The course also teaches how to build a backend server using Docker and write tests with TDD. The hands-on experience in creating a recipe API that allows for object creation, image uploads, and filtering is directly applicable to many software development tasks. The use of version control and automation tools, namely GitHub Actions, further equips software engineers with essential skills.
Full-Stack Developer
A Full Stack Developer works on both the front-end and back-end components of a web application. While this course focuses on back-end development, it is essential for a Full Stack Developer to have back-end skills. This course provides a deep dive into building an advanced REST API with Python and Django. The skills learned, such as handling user profiles, modifying objects, processing image uploads, and filtering data, make the backend portion of the Full Stack Developer role easier to manage. The hands-on approach of constructing an advanced recipe API means you will have valuable practice before entering the workforce. The ability to manage a local dev server, and the lessons in test driven development, databases, and project automation, all add up to a powerful set of skills for a Full Stack Developer.
Web Application Developer
A Web Application Developer specializes in building and maintaining web-based applications. This course helps build a foundation for the skills needed for this role. The course focuses on back-end development using Python and Django, which are core technologies for many web applications. This course focuses on building an advanced API, which is integral to many web apps. The course uses a hands-on process to build a recipe API, teaching you how to create and manage data, user profiles, and object creation. The course also integrates test driven development, databases, and Docker into the build process, which are all helpful skills for a Web Application Developer. The skills gained from implementing automated code checks using Github Actions adds another layer of useful knowledge. This course may be useful.
DevOps Engineer
A DevOps Engineer focuses on the software development lifecycle, often bridging the gap between development and operations. While not the primary focus, this course provides skills a DevOps Engineer may find useful. The course goes deep into setting up local development servers with Docker, which DevOps uses extensively. The course also covers how to automate code checks using GitHub Actions which is a valuable part of the DevOps process. The course focuses on building a REST API and managing databases, giving a strong understanding of the backend. The inclusion of best practices such as PEP-8 and unit tests may also be useful for this role. This course may be useful.
Solutions Architect
A Solutions Architect designs complex systems and applications to meet specific business needs. While this role is more strategic, the technical skills gained in this course can be advantageous. The course teaches how a system can be built from the ground up, using Django, Docker, and a Postgres database. A Solutions Architect must understand how APIs function, and this course provides that. The hands-on project of building a recipe API, complete with user management, data handling, and image uploads, gives a good foundation for system design. The experience with test driven development and version control is also relevant. This course may be useful.
Mobile Application Developer
A Mobile Application Developer focuses on creating applications for mobile platforms. Although this course focuses on backend development, it is helpful for Mobile App Developers to understand how APIs work. This course teaches how to build a REST API, which are the typical means by which a mobile app interacts with a server. The course goes through creating objects, managing users, and handling image uploads. The course also uses a database for data storage. The practical project of creating an advanced recipe API provides real-world experience in the way mobile apps typically function. The course also includes testing and version control, which could also be useful. This course may be useful.
Database Administrator
A Database Administrator manages and maintains databases. This course's emphasis on building a backend using Postgres may be useful in this role, and also provides context for how databases are used. The course covers how to configure databases in Django using Docker, and the way data is structured. The practical experience gained by building a recipe API will be useful in a more general sense, since it uses a database to store data. This course may be useful for a Database Administrator wishing to understand how apps interact with databases. The course also teaches test driven development and version control. This course may be useful.
Technical Project Manager
A Technical Project Manager oversees software development projects. While it is not a technical role, knowing the details of the software development process can be useful. This course will provide context for any manager that deals with projects that use technologies like Python, Django, Docker, or Postgres. The process of building a REST API will be easier to manage with a knowledge of how an API is designed and built. The inclusion of test driven development and version control using Github Actions will give context into the software development lifecycle. The course may help a Technical Project Manager better interact with their team. This course may be useful.
Software Architect
A Software Architect is responsible for the high-level design of software systems. While the course is more focused on implementation, the knowledge gained can be helpful. The course goes through how to build a REST API, which is an important part of system architecture. A Software Architect must understand the technologies used to build software systems, and the course uses Python, Django, Docker, and Postgres. The practical project of building a recipe API gives hands-on experience useful for planning. The course also provides experience with version control and automated code checks, which can help with the software development lifecycle. This course may be useful.
Quality Assurance Engineer
A Quality Assurance Engineer is responsible for testing and ensuring the quality of software. This course may be helpful to a QA Engineer who wishes to better understand the backend. The course teaches how tests are written using test driven development, which may prove useful for a tester. The course also uses automated tests through Github Actions. The process of building an API can also provide context for testing, since the tester will better understand how the API is built. This course may be useful.
Technical Consultant
A Technical Consultant advises clients on technology solutions. Although this course focuses specifically on backends, this technical knowledge of Python and Django can be helpful. A consultant should understand how APIs work, and this course provides substantial experience doing so. The course also uses a test driven development process, databases, and automated testing, which provides context for the software development lifecycle. The practical project of creating an advanced recipe API provides a real world example of a complex system. The inclusion of Docker containerization and Github Actions can also be valuable. This course may be useful.
Data Engineer
A Data Engineer focuses on building and maintaining systems for data storage and processing. Although this course's focus is not on data manipulation, this role requires an understanding how databases and APIs work. This course provides practical experience setting up databases with Postgres, and the experience building a REST API is useful. Data Engineers sometimes work with APIs to access data, and this course's hands-on API project will help. The course also uses Docker containers, which data processing systems use frequently. The course also describes using test driven development and version control, which is helpful in the software development lifecycle. This course may be useful.
IT Specialist
An IT Specialist provides technical support and maintains computer systems. Although this course does not directly deal with system administration, it does cover skills an IT Specialist may find helpful. The course deals with setting up a local development server using Docker, and configuring databases using Postgres. An IT Specialist may use these tools when dealing with software. The course also covers how to build a REST API, which may be useful when dealing with modern systems. The course may also be useful for an IT Specialist that is interested in getting into software development. This course may be useful.

Reading list

We've selected one books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Build a Backend REST API with Python & Django - Advanced.
Provides a comprehensive guide to TDD using Python, which core methodology used in the course. It covers testing strategies, mocking, and best practices for writing maintainable tests. The book is particularly helpful for understanding how to apply TDD principles to Django projects. It serves as a valuable reference for writing robust and well-tested code.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser