Flask (web framework)

Flask is a micro web framework written in Python. It is classified as a microframework because it does not require particular tools or libraries.[3] 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. Extensions are updated far more frequently than the core Flask program.[4]

Flask
Developer(s)Armin Ronacher
Initial releaseApril 1, 2010 (2010-04-01)
Stable release
1.1.2 / April 3, 2020 (2020-04-03)[1][2]
Repositorygithub.com/pallets/flask
Written inPython
TypeWeb framework
LicenseBSD
Websitepalletsprojects.com/p/flask/

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

History

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

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

Flask has become popular among Python enthusiasts. As of January 2020, it has more stars on GitHub than any other Python web-development framework,[12] and was voted the most popular web framework in the Python Developers Survey 2018.[13]

Components

The microframework Flask is based on the Pocoo projects Werkzeug and Jinja2.

Werkzeug

Werkzeug 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.[14][15]

Jinja

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.

Features

  • 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

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():
    return "Hello World!"

if __name__ == "__main__":
    app.run(debug=True)
gollark: In some CommonMark extensions.
gollark: ~~ is already strikethrough.
gollark: (I simply parse CommonMark in my head to completely understand the consequences of all asterisks.)
gollark: Not the furry roleplayer one.
gollark: That might actually be a neat idea, come to think of it. I'll find one of the feature lists.

See also

References

  1. https://github.com/pallets/flask/releases
  2. https://pypi.org/project/Flask
  3. "Flask Foreword". Archived from the original on 2017-11-17.
  4. "Flask Extensions". Archived from the original on 2018-05-17.
  5. What challenges has Pinterest encountered with Flask?
  6. Rachel Sanders: Developing Flask Extensions - PyCon 2014
  7. "Pocoo Team". Archived from the original on 2018-03-15.
  8. Ronacher, Armin. "Opening the Flask" (PDF). Archived from the original (PDF) on 2016-12-17. Retrieved 2011-09-30.
  9. 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.
  10. "Denied: the next generation python micro-web-framework (April Fools page)". Archived from the original on 2011-09-04. Retrieved 2011-09-30.
  11. "History". Pocoo Team. Archived from the original on 2017-11-19. Retrieved 2015-03-25.
  12. "Python libraries by GitHub stars". Github. Retrieved 2020-01-27.
  13. "Python Developers Survey 2018". www.jetbrains.com. 2018-11-01.
  14. Ronacher, Armin. "Werkzeug The Python WSGI Utility Library". palletsprojects.com. Retrieved 27 May 2018.
  15. Ronacher, Armin. "Installation, Python Version". palletsprojects.com. Retrieved 20 April 2020.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.