Flask (web framework)

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
Flask
Flask logo.svg
Developer(s)Armin Ronacher
Initial releaseApril 1, 2010; 11 years ago (2010-04-01)
Stable release
2.0.2[1] Edit this on Wikidata / 4 October 2021; 54 days ago (4 October 2021)
Repositorygithub.com/pallets/flask
Written inPython
TypeWeb framework
LicenseBSD
Websitepalletsprojects.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]

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

History[edit]

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]

Flask has become popular among Python enthusiasts. As of October 2020, it has second most stars on GitHub among Python web-development frameworks, only slightly behind Django,[13] and was voted the most popular web framework in the Python Developers Survey 2018.[14]

Components[edit]

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

Werkzeug[edit]

Werkzeug (German for "tool") is a utility library for the Python programming language, in other words a toolkit for Web Server Gateway Interface (WSGI) applications, and is licensed under a BSD License. Werkzeug can realize software objects for request, response, and utility functions. It can be used to build a custom software framework on top of it and supports Python 2.7 and 3.5 and later.[15][16]

Jinja[edit]

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

MarkupSafe[edit]

MarkupSafe is a string handling library for the Python programming language, licensed under a BSD license. 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[edit]

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

Features[edit]

  • Development server and debugger
  • Integrated support for unit testing
  • RESTful request dispatching
  • Uses Jinja templating
  • Support for secure cookies (client side sessions)
  • 100% WSGI 1.0 compliant
  • Unicode-based
  • Extensive documentation
  • Google App Engine compatibility
  • Extensions available to enhance features desired

Example[edit]

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

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello() -> str:
    return "Hello World"


if __name__ == "__main__":
    app.run(debug=False)

See also[edit]

References[edit]

  1. ^ https://flask.palletsprojects.com/en/2.0.x/changes/; retrieved: 18 October 2021.
  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. ^ a b 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. ^ "Python libraries by GitHub stars". Github. Retrieved 2020-01-27.
  14. ^ "Python Developers Survey 2018". www.jetbrains.com. 2018-11-01.
  15. ^ Ronacher, Armin. "Werkzeug The Python WSGI Utility Library". palletsprojects.com. Retrieved 27 May 2018.
  16. ^ Ronacher, Armin. "Installation, Python Version". palletsprojects.com. Retrieved 20 April 2020.

External links[edit]