As a developer, you have the power to cherry-pick the extensions that work best for your project or even write your own if you feel inclined to. These and many other key services most web applications need are available through extensions that integrate with the core packages. There is no native support in Flask for accessing databases, validating web forms, authenticating users, or other high-level tasks. Werkzeug and Jinja2 are authored by the core developer of Flask. The routing, debugging, and Web Server Gateway Interface (WSGI) subsystems come from Werkzeug, while template support is provided by Jinja2. Because you can pick and choose the extension packages that you want, you end up with a lean stack that has no bloat and does exactly what you need.įlask has two main dependencies. Flask was designed as an extensible framework from the ground up it provides a solid core with the basic services, while extensions provide the rest. Flask is a small framework by most standards, small enough to be called a “micro-framework.” It is small enough that once you become familiar with it, you will likely be able to read and understand all of its source code.īut being small does not mean that it does less than other frameworks.