Flask (web framework)

Last updated
Flask
Developer(s) Armin Ronacher
Initial releaseApril 1, 2010;14 years ago (2010-04-01)
Stable release
3.0.2 [1]   OOjs UI icon edit-ltr-progressive.svg / 3 February 2024;2 months ago (3 February 2024)
Repository github.com/pallets/flask
Written in Python
Type Web framework
License BSD
Website palletsprojects.com/p/flask/

Flask is a micro web framework written in Python. It is classified as a microframework because it does not require particular tools or libraries. [2] It has no database abstraction layer, form validation, or any other components where pre-existing third-party libraries provide common functions. However, Flask supports extensions that can add application features as if they were implemented in Flask itself. Extensions exist for object-relational mappers, form validation, upload handling, various open authentication technologies and several common framework related tools. [3]

Contents

Applications that use the Flask framework include Pinterest and LinkedIn. [4] [5]

History

Flask was created by Armin Ronacher of Pocoo, an international group of Python enthusiasts formed in 2004. [6] According to Ronacher, the idea was originally an April Fool's joke that was popular enough to make into a serious application. [7] [8] [9] The name is a play on the earlier Bottle framework. [7]

When Ronacher and Georg Brandl created a bulletin board system written in Python in 2004, the Pocoo projects Werkzeug and Jinja were developed. [10]

In April 2016, the Pocoo team was disbanded and development of Flask and related libraries passed to the newly formed Pallets project. [11] [12] Since 2018, Flask-related data and objects can be rendered with Bootstrap. [13]

Flask has become popular among Python enthusiasts. As of October 2020, it has the second-most number of stars on GitHub among Python web-development frameworks, only slightly behind Django, [14] and was voted the most popular web framework in the Python Developers Survey for years between and including 2018 and 2022. [15] [16] [17] [18] [19]

Components

The microframework Flask is part of the Pallets Projects (formerly Pocoo), and based on several others of them, all under a BSD license.

Werkzeug

Werkzeug (German for "tool") is a utility library for the Python programming language for Web Server Gateway Interface (WSGI) applications. Werkzeug can instantiate objects for request, response, and utility functions. It can be used as the basis for a custom software framework and supports Python 2.7 and 3.5 and later. [20] [21]

Jinja

Jinja, also by Ronacher, is a template engine for the Python programming language. Similar to the Django web framework, it handles templates in a sandbox.

MarkupSafe

MarkupSafe is a string handling library for the Python programming language. The eponymous MarkupSafe type extends the Python string type and marks its contents as "safe"; combining MarkupSafe with regular strings automatically escapes the unmarked strings, while avoiding double escaping of already marked strings.

ItsDangerous

ItsDangerous is a safe data serialization library for the Python programming language. It is used to store the session of a Flask application in a cookie without allowing users to tamper with the session contents.

Features

Example

The following code shows a simple web application that displays "Hello World!" when visited:

fromflaskimportFlaskapp=Flask(__name__)@app.route("/")defhello()->str:return"Hello World"if__name__=="__main__":app.run()

See also

Related Research Articles

Zope is a family of free and open-source web application servers written in Python, and their associated online community. Zope stands for "Z Object Publishing Environment", and was the first system using the now common object publishing methodology for the Web. Zope has been called a Python killer app, an application that helped put Python in the spotlight.

The Web Server Gateway Interface is a simple calling convention for web servers to forward requests to web applications or frameworks written in the Python programming language. The current version of WSGI, version 1.0.1, is specified in Python Enhancement Proposal (PEP) 3333.

CherryPy is an object-oriented web application framework using the Python programming language. It is designed for rapid development of web applications by wrapping the HTTP protocol but stays at a low level and does not offer much more than what is defined in RFC 7231.

<span class="mw-page-title-main">Django (web framework)</span> Python web framework

Django is a free and open-source, Python-based web framework that runs on a web server. It follows the model–template–views (MTV) architectural pattern. It is maintained by the Django Software Foundation (DSF), an independent organization established in the US as a 501(c)(3) non-profit.

<span class="mw-page-title-main">TurboGears</span>

TurboGears is a Python web application framework consisting of several WSGI components such as WebOb, SQLAlchemy, Kajiki template language and Repoze.

<span class="mw-page-title-main">Jinja (template engine)</span> Template engine for the Python programming language associated with the Flask framework

Jinja is a web template engine for the Python programming language. It was created by Armin Ronacher and is licensed under a BSD License. Jinja is similar to the Django template engine but provides Python-like expressions while ensuring that the templates are evaluated in a sandbox. It is a text-based template language and thus can be used to generate any markup as well as source code.

Google App Engine is a cloud computing platform as a service for developing and hosting web applications in Google-managed data centers. Applications are sandboxed and run across multiple servers. App Engine offers automatic scaling for web applications by automatically allocating more resources to the web application for handling additional demand as the amount of requests increases for an application.

Web2py is an open-source web application framework written in the Python programming language. Web2py allows web developers to program dynamic web content using Python. Web2py is designed to help reduce tedious web development tasks, such as developing web forms from scratch, although a web developer may build a form from scratch if required.

Tornado is a scalable, non-blocking web server and web application framework written in Python. It was developed for use by FriendFeed; the company was acquired by Facebook in 2009 and Tornado was open-sourced soon after.

Twig is a template engine for the PHP programming language. Its syntax originates from Jinja and Django templates. It's an open source product licensed under a BSD License and maintained by Fabien Potencier. The initial version was created by Armin Ronacher. Symfony PHP framework comes with a bundled support for Twig as its default template engine since version 2.

<span class="mw-page-title-main">Bootstrap (front-end framework)</span> Web design front-end

Bootstrap is a free and open-source CSS framework directed at responsive, mobile-first front-end web development. It contains HTML, CSS and (optionally) JavaScript-based design templates for typography, forms, buttons, navigation, and other interface components.

Pylons Project is an open-source organization that develops a set of web application technologies written in Python. Initially the project was a single web framework called Pylons, but after the merger with the repoze.bfg framework under the new name Pyramid, the Pylons Project now consists of multiple related web application technologies.

PythonAnywhere is an online integrated development environment (IDE) and web hosting service based on the Python programming language. Founded by Giles Thomas and Robert Smithson in 2012, it provides in-browser access to server-based Python and Bash command-line interfaces, along with a code editor with syntax highlighting. Program files can be transferred to and from the service using the user's browser. Web applications hosted by the service can be written using any WSGI-based application framework.

A microframework is a term used to refer to minimalistic web application frameworks. It is contrasted with full-stack frameworks.

<span class="mw-page-title-main">Armin Ronacher</span> Austrian open source software programmer

Armin Ronacher is an Austrian open source software programmer and the creator of the Flask web framework for Python.

uWSGI is an open source software application that "aims at developing a full stack for building hosting services". It is named after the Web Server Gateway Interface (WSGI), which was the first plugin supported by the project. uWSGI is maintained by Italian based software company unbit.

Jam.py is free and open-source low-code/no-code "full stack" WSGI rapid application development framework for the JavaScript and Python programming language.

FastAPI is a modern web framework first released in 2018 for building RESTful APIs in Python. It is used for building APIs with Python 3.8+ based on standard Python-type hints.

The Asynchronous Server Gateway Interface (ASGI) is a calling convention for web servers to forward requests to asynchronous-capable Python programming language frameworks, and applications. It is built as a successor to the Web Server Gateway Interface (WSGI).

References

  1. "Release 3.0.2". 3 February 2024. Retrieved 19 February 2024.
  2. "Flask Foreword". Archived from the original on 2017-11-17.
  3. "Flask Extensions". Archived from the original on 2018-05-17.
  4. What challenges has Pinterest encountered with Flask?
  5. Rachel Sanders: Developing Flask Extensions - PyCon 2014
  6. "Pocoo Team". Archived from the original on 2018-03-15.
  7. 1 2 Ronacher, Armin. "Opening the Flask" (PDF). Archived from the original (PDF) on 2016-12-17. Retrieved 2011-09-30.
  8. Ronacher, Armin (3 April 2010). "April 1st Post Mortem". Armin Ronacher's Thoughts and Writings. Archived from the original on 2018-05-14. Retrieved 2015-07-25.
  9. "Denied: the next generation python micro-web-framework (April Fools page)". Archived from the original on 2011-09-04. Retrieved 2011-09-30.
  10. "History". Pocoo Team. Archived from the original on 2017-11-19. Retrieved 2015-03-25.
  11. Ronacher, Armin (2016-04-01). "Hello Pallets Users". The Pallets Projects. Retrieved 2021-05-08.
  12. "Pocoo". www.pocoo.org. Retrieved 2021-05-08.
  13. "Bootstrap-Flask". HelloFlask. Retrieved 2022-11-06.
  14. "Python libraries by GitHub stars". Github. Retrieved 2020-01-27.
  15. "Python Developers Survey 2018". www.jetbrains.com. 2018-11-01.
  16. "Python Developers Survey 2019". www.jetbrains.com. 2019.
  17. "Python Developers Survey 2020". www.jetbrains.com. 2020.
  18. "Python Developers Survey 2021". www.jetbrains.com. 2021.
  19. "Python Developers Survey 2022 Results". www.jetbrains.com. 2022. Retrieved 2023-10-17.
  20. Ronacher, Armin. "Werkzeug The Python WSGI Utility Library". palletsprojects.com. Retrieved 27 May 2018.
  21. Ronacher, Armin. "Installation, Python Version". palletsprojects.com. Archived from the original on 11 May 2021. Retrieved 20 April 2020.