Web Development With Python: Django vs Flask - The Turning Gear

Web Development With Python: Django vs Flask

Michael Hudelson 09.18.2018

Web Development With Python: Django vs Flask
Python is a powerful tool capable of producing all sorts of amazing things, so it is no wonder that it is quickly becoming one of the most popular and well liked web development languages. It is easy to use, capable of doing a lot more with a lot less, extremely flexible, and has an amazing community of developers built around it. Unfortunately, if you are new to using Python as a web development tool, it may feel a bit daunting to hop in at first. Especially when a simple google search for “best python web framework” yields a lengthy list that can be difficult to compare. Fortunately for you, I am here to break down the two most popular options: Flask and Django

Flask: Just As Much As You Need
Flask is an amazing lightweight web framework that can be used to quickly and easily get simple projects off the ground. Out of the box it comes with templating, URL routing, error handling, a debugger, and that is it. This means there is no defined architectural pattern, data modeling, ORM, admin, or users. Basically it is just what you need to get a simple project off the ground. Unfortunately, this means that if you want to do something more complex, Flask alone is not going to be a good choice. Luckily, this is where Flask extensions come in to save the day. Flask gives you the ability to pick and choose what extensions you want to use with your project. This flexibility keeps your project lean by allowing you to only add in the necessary extensions for your project.

This flexibility can be both a blessing and a curse though. While it may make it easier to start out with a new application, the learning curve for existing applications can be much higher since there is no standard for how things are done in Flask. This means a poorly architected project could be a nightmare to work with. Despite this potential pitfall, Flask’s flexibility makes it a great choice when you need to build something with unusual requirements.

Django: Everything That You Need
Django is a powerful web development framework that takes a very different approach from Flask. Out of the box it comes with nearly everything you need to build most web based projects. Django comes with a predefined architectural pattern (MVC) for how you should structure your applications; as well as data models and an ORM for representing the data that will be used in your system. Additionally, it comes with an admin tool, users, and user authentication out of the box. Although the Django Rest Framework is not part of Django core, I think it is worth considering it as if it were since it is THE standard for how to build RESTful applications using Django

While all of these things are extremely useful, they can seem a bit daunting to a new developer, especially since it is so many things to learn all at once. While this initial learning curve may be a bit difficult, learning to do more with Django becomes relatively easy since it is a standardized framework. This means that you can get help from the community fairly easy, despite them not having much of the context around your system.

Which One To Use

I know everyone wants a rock solid answer, but unfortunately, it really does depend on the needs of your project. For example, if your project is a good fit with all of the tools that come with Django out of the box, I would say that Django is a good choice. You will be able to take advantage of the fact that Django is standardized when you encounter problems that you need help with, or when onboarding a new engineer to the project (assuming they already know Django). However, if you project has unusual requirements, or using Django would require you to go against the grain, Flask may be a much better choice. It offers you the ability to build out the application exactly as you need with little to no resistance.


Both frameworks are great for different reasons. Knowing the differences can help you make an educated decision when choosing the right framework for your project. I would highly recommend trying to build a simple application in both to get the feel for how they work. When you do, keep in mind the different problems they present and solve so that you can form your own opinion.


Flask Tutorial

Django Tutorial



3 + 11 =