Build a Backend REST API with Python & Django - Advanced

Create an advanced REST API with Python, Django REST Framework and Docker using Test Driven Development (TDD)

4.62 (8213 reviews)
Udemy
platform
English
language
Web Development
category
45,681
students
23 hours
content
Jun 2022
last update
$139.99
regular price

What you will learn

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

Description

Welcome to the advanced course on how to Build a Backend REST API using Python, Django (3.2), 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 REST API that can handle:

  • User authentication

  • Creating objects

  • Filtering and sorting objects

  • Uploading and viewing images

You’ll also learn, in detail how to:

  • Setup a project with Docker and Docker-Compose

  • Configure GitHub Actions to automatically run linting and unit tests

  • Write unit tests using the Django Test Framework

  • Apply best practice principles including Test Driven Development  

  • Handle uploading media files with Django

  • Customize the Django admin

  • Configure a Postgres database

This course has one singular focus: To teach you how to create an advanced API from start to finish using best practice principles and Test Driven Development.

This course is NOT FOR YOU:

  • If you’re looking for a course to build an API, a front end, and deployment

  • If you’re looking to build 10 different apps in one course

  • If you want to learn lots of different technologies and approaches to app development in general

This is a hands-on course, with a bit of theory and lots of opportunities to test your knowledge.

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

**PLEASE NOTE: You cannot run Docker on Windows 10 Home edition. 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.

Content

Introduction

Welcome to Build a Backend API with Django REST Framework - Advanced
Intro to the course
Course structure
How to get the most out of this course
How to get help
Windows 10 Home Workaround

Technologies used in this course

Python
Django
Django REST Framework
Docker
Travis-CI
Postgres
What is test driven development?

Installation and setup

System setup
Windows 10 Home Workaround

Create new project

Setup new GitHub project
Add Dockerfile
Configure Docker Compose
Custom configuration for Linux users
Create Django project

Setup automation

Enable Travis-CI for project
Create Travis-CI configuration file
Travis-CI

Introduction to test driven development (TDD)

Writing a simple unit test
Writing a unit test with TDD
Django Unit Tests

Configure Django custom user model

Create core app
Add tests for custom user model
Implement custom user model
Normalize email addresses
Add validation for email field
Add support for creating superusers
Django custom user model

Setup Django admin

Add tests for listing users in Django admin
Modify Django admin to list our custom user model
Modify Django admin to support changing user model
Modify Django admin to support creating users

Setting up database

Add postgres to docker compose
Add postgres support to Dockerfile
Configure database in Django

Waiting for postgres to start

Mocking with unittests
Add tests for wait_for_db command
Add wait_for_db command
Make docker compose wait for db
Test in browser
Mocking

Create user management endpoints

Create users app
Add tests for create user API
Add create user API
Add tests for creating a new token
Add create token API
Add tests for manage user endpoint
Add manage user endpoint

Create tags endpoint

Create recipe app
Add tag model
Add tests for listing tags
Add feature to list tags
Add create tags feature

Create ingredients endpoint

Add ingredient model
Add tests for listing ingredients
Implement feature for list ingredients
Implement feature for creating ingredients
Re-factor tags and ingredients viewsets

Create recipe endpoint

Add recipe model
Add tests for listing recipes
Implement feature for listing recipes
Add tests for retrieving recipe detail
Implement feature for retrieving recipe detail
Add tests for creating recipes
Implement feature for creating recipes
Add tests for updating recipes

Add upload image endpoint

Add Pillow requirement
Modify recipe model
Add tests for uploading image to recipe
Add feature to upload image

Add filtering

Add tests for filtering recipes
Implement feature to filter recipes
Add tests for filtering tags and ingredients
Implement feature for filtering tags and ingredients

Summary

What was covered in this course

Screenshots

Build a Backend REST API with Python & Django - Advanced - Screenshot_01Build a Backend REST API with Python & Django - Advanced - Screenshot_02Build a Backend REST API with Python & Django - Advanced - Screenshot_03Build a Backend REST API with Python & Django - Advanced - Screenshot_04

Reviews

Hitesh
November 1, 2023
It's a learning friendly course, the instructor explains the concepts clearly and step by step. I'm having a great time learning.
AHMED
October 11, 2023
This course is extremely useful. It is full of tips and tricks that would otherwise take you years to acquire. I definitely recommend it.
Chris
October 2, 2023
I loved how it spoke to those who were already well familiar with Python, and maybe slightly with Django, but didn't know how to build an API with Django. Would have loved some front end stuff, but there are other courses for that.
Carlos
September 28, 2023
I like the fact that is using the industry technologies so most likely you will have what it needs to find a job related
Socco
September 22, 2023
Perfect type of applied training…teach me the whole process and all the technologies to make something actually work! This is awesome!
Aditya
September 18, 2023
Overall a great course. I learnt about Docker, GitHub actions and AWS deployment in addition to Django Rest Framework. I gave 4 stars because a few things could have been better. I felt that the tags and ingredients sub-section were almost identical to each other and did not add any additional learning value. Maybe, the ingredients section could have been asked to be implemented as an assignment or could have had more attributes / newer relationships that could have taught more django concepts.
Priyavardhan
September 7, 2023
It is a really good course to understand how to create an application from the ground using all industry-based tools, which you gonna see at work. I really appreciate the course for including docker, GitHub, and other deployment tools and tech. I also appriciate the quick response from the tutor/mentor for my questions.
Oliwier
September 3, 2023
Everything is fine, even if you want to go through course on newest versions, it's still possible to do without big issues.
Francois
August 31, 2023
There are no middle note for me. Either it is bad or good. My point is that all the front part is missing, like how to interact with the API from HTML. When I tried to build my front after section 13, I have realized this knowledge is essential, and I am struggling to connect the dot. It is really pity, as the job is pretty good for the backend, even if sometimes some explanations missed. But for that price, that's ok, I guess.
Kevin
August 28, 2023
Moves at a good pace and covers a lot of ground including docker and docker-compose, custom user modeling, admin interface customization, test driven development and mocking, and API development in the Django framework. The instructor is well rehearsed and the course is well worth the time.
Tal
August 18, 2023
I watched many courses of him I am very thanksful for this, very helpful I work 1 year in Django and still I learned a lot.
Sotiris
August 17, 2023
Fantastic course, Mark was exactly as verbose as one needs to be when explaining key concepts and techniques for developing an API with Django. Highly recommended.
Pavel
August 14, 2023
Overall, I have enjoyed the course. It covers many technical topics in great detail and for the most part, I have found the explanations helpful. Huge thanks to Mark for putting this course together! However, I sometimes felt the course focused too much on areas that weren’t critical to understanding REST API. For example, I didn’t see the value in covering Django custom models and admin pages in such depth as part of an introductory course. It is much easier to follow a course where each step has a very clear intention and purpose for the project. I also think that the test-driven development approach is not always ideal for learning purposes. Although, this is my personal opinion. The course was great at introducing TTD in a practical way. But I felt the unit tests took up a very significant amount of screen time, which made it a lot harder to concentrate on the API implementation. Perhaps, to make the course easier to follow, the tests could be provided as a side topic instead. Hope the feedback is useful.
Christian
August 7, 2023
Mark is experienced. Django is explained pretty well, and all the code is compatible with Django 4, even if he used Django 3. This course might be just a bit hard to follow, since it is very advanced and some concepts are not explained in deep.
Luis
August 4, 2023
Excelent course! Really easy to follow up and get to undestand all the topics (His code is very clean). A highly recommended course to take.

Charts

Price

Build a Backend REST API with Python & Django - Advanced - Price chart

Rating

Build a Backend REST API with Python & Django - Advanced - Ratings chart

Enrollment distribution

Build a Backend REST API with Python & Django - Advanced - Distribution chart
2045310
udemy ID
11/24/2018
course created date
8/10/2019
course indexed date
Bot
course submited by