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]
Developer(s) | Armin Ronacher |
---|---|
Initial release | April 1, 2010 |
Stable release | |
Repository | github |
Written in | Python |
Type | Web framework |
License | BSD |
Website | palletsprojects |
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)
See also
References
- https://github.com/pallets/flask/releases
- https://pypi.org/project/Flask
- "Flask Foreword". Archived from the original on 2017-11-17.
- "Flask Extensions". Archived from the original on 2018-05-17.
- What challenges has Pinterest encountered with Flask?
- Rachel Sanders: Developing Flask Extensions - PyCon 2014
- "Pocoo Team". Archived from the original on 2018-03-15.
- Ronacher, Armin. "Opening the Flask" (PDF). Archived from the original (PDF) on 2016-12-17. Retrieved 2011-09-30.
- 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.
- "Denied: the next generation python micro-web-framework (April Fools page)". Archived from the original on 2011-09-04. Retrieved 2011-09-30.
- "History". Pocoo Team. Archived from the original on 2017-11-19. Retrieved 2015-03-25.
- "Python libraries by GitHub stars". Github. Retrieved 2020-01-27.
- "Python Developers Survey 2018". www.jetbrains.com. 2018-11-01.
- Ronacher, Armin. "Werkzeug The Python WSGI Utility Library". palletsprojects.com. Retrieved 27 May 2018.
- Ronacher, Armin. "Installation, Python Version". palletsprojects.com. Retrieved 20 April 2020.