Flask (web framework)
Some of this article's listed sources may not be reliable. (September 2018) (Learn how and when to remove this template message) |
| Developer(s) | Armin Ronacher |
|---|---|
| Initial release | April 1, 2010 |
| Stable release | |
| Repository | |
| Written in | Python |
| Operating system | Cross-platform |
| Type | Web framework |
| License | BSD |
| Website | 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.[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 regularly than the core Flask program.[4] Flask is commonly used with MongoDB, which gives it more control over databases and history.
Applications that use the Flask framework include Pinterest,[5] LinkedIn,[6] and the community web page for Flask itself.[7]
History[edit]
In 2004, Pocoo was formed as an international group of Python enthusiasts.[8] Flask was created by Armin Ronacher of Pocoo:
"It came out of an April Fool's joke but proved popular enough to make into a serious application in its own right."[9][10][11]
When Ronacher and Georg Brandl created[when?] a bulletin board system written in Python, the Pocoo projects Werkzeug and the Jinja2 were developed, too.[12]
Despite the lack of a major release, Flask has become extremely popular among Python enthusiasts. As of mid 2016, it was the most popular Python web development framework on GitHub.[13]
Components[edit]
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.6, 2.7 and 3.3.[14]
- 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 provides that templates are evaluated in a sandbox.
Features[edit]
- Contains development server and debugger
- Integrated support for unit testing
- RESTful request dispatching
- Uses Jinja2 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 prints "Hello World!":
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()
See also[edit]
References[edit]
- ^ https://github.com/pallets/flask/releases
- ^ https://pypi.org/project/Flask
- ^ "Flask Foreword".
- ^ "Flask Extensions".
- ^ What challenges has Pinterest encountered with Flask?
- ^ Rachel Sanders: Developing Flask Extensions - PyCon 2014
- ^ Community web page for Flask
- ^ "Pocoo team".
- ^ Ronacher, Armin. "Opening the Flask" (PDF). Retrieved 2011-09-30.
- ^ Ronacher, Armin (3 April 2010). "April 1st Post Mortem". Armin Ronacher's Thoughts and Writings. 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.
- ^ "Pocoo History".
- ^ "Python libraries by GitHub stars".
- ^ Ronacher, Armin. "Werkzeug The Python WSGI Utility Library". palletsprojects.com. Retrieved 27 May 2018.