Building Your Own Python Web Framework

Learn how to build your own Python web framework!

"Don't reinvent the wheel" is a common programming mantra we hear nearly every day. But what if you want to learn more about the wheel? What if you want to learn how to make the damn wheel itself so you can make the next iteration better, faster, or stronger? It's often a great idea to reinvent the wheel, especially when it comes to learning -- which is exactly what this course is all about!

In this course, you'll learn how to develop your own Python web framework to see how things work beneath the surface of Flask, Django, and the other Python-based web frameworks.

First, you'll learn how to build a synchronous web framework based on WSGI, just like Django and Flask. After the main functionality is in place, you'll create a test client and, from that point on, we'll follow basic test-driven development. Once the framework is complete, you'll package it up and upload it to PyPI (the Python Package Index). You'll then develop a small web application with the framework you just built and deploy it to Heroku.

Most importantly, you, as a developer, will be building something for other developers, which might be a little different from what you do at your day-to-day job and thus you'll learn a lot.

Learning Objectives

By the end of this course, you will be able to:

  1. Explain what WSGI is and why it's needed
  2. Build a basic web framework and run it with Gunicorn, a WSGI-compatible server
  3. Develop the core request handlers, routes, and templates
  4. Implement class-based route handlers
  5. Test your framework with unit tests and practice test-driven development
  6. Build a test client to test the API without having to spin up the server
  7. Implement custom exception handlers to ensure 404 (Not Found) and 500 (Internal Server Error) errors are handled gracefully
  8. Develop solutions for managing static files and middleware in the framework
  9. Control allowed methods for your request handlers
  10. Create a custom response class to make response creation easy
  11. Create a Python package and upload it to PyPI
  12. Develop a web application using the framework you built and deploy it to Heroku

Tools and Technologies

  1. Python
  2. WSGI
  3. Gunicorn
  4. Pytest
  5. PyPI
  6. Heroku


To get the most out of this course, you should preferably have strong working knowledge of Python 3.

You should also have a solid understanding of the following Internet and web fundamentals:

  1. IP addresses, URL structures, and DNS
  2. Web browsers and web servers
  3. HTTP requests and responses

Review the following videos for more info:

  1. The Kids Guide to the Internet
  2. What is the Internet?
  3. The Internet: IP Addresses & DNS
  4. The Internet: HTTP & HTML

Finally, it helps to have a bit of experience working with a web framework like Flask, Django, Rails, and/or Express, just to name a few.


  • Current version: 1.0.0
  • Last updated: October 21st, 2019
  • AuthorJahongir Rahmonov

Table of Contents

Join our mailing list to be notified about course updates and new tutorials.