Flask

開發者| Armin Ronacher
首次发布| 2010年4月1日 (2010-04-01)
当前版本|

* 3.0.3 (2024年4月7日；穩定版本)[1]

源代码库|

* github.com/pallets/flask

编程语言| Python
操作系统| 跨平台
类型| Web應用框架
许可协议| BSD
网站| flask.pocoo.org

Flask是一個使用Python編寫的輕量級Web應用框架。基於Werkzeug WSGI工具箱和Jinja2模板引擎。Flask使用BSD授權。

Flask被稱為“微框架”，因為它使用簡單的核心，用扩展增加其他功能。Flask沒有預設使用的資料庫、表單驗證工具。然而，Flask保留了擴增的彈性，可以用Flask-extension[2]加入這些功能：ORM、表單驗證工具、檔案上傳、各種開放式身份驗證技術。

采用Flask的知名网站包括领英、Pinterest等。[3][4]

## 歷史[编辑]

2004年，一群來自世界各地的Python熱衷者組成了Pocoo。[5]Flask的作者是來自Pocoo的Armin Ronacher。本來只是作者的一個愚人節玩笑，不過後來大受歡迎，進而成為一個正式的專案。[6][7]

当Ronacher和Georg Brandl在2004年开发一个用Python编写的布告板系统时，开发了Werkzeug和Jinja两个项目。[8]

2016 年 4 月，Pocoo 团队解散，Flask 及相关库的开发移交给新成立的 Pallets 项目。[9][10]

Flask在Python爱好者及开发者中很受欢迎。在2018年的一项面向Python开发者的调查中被评为最受欢迎的Web框架。[11]截至2020年10月，它在GitHub上的Python Web开发框架中排名第二，仅略低于Django。[12]

## 构件[编辑]

微框架Flask基于了Pocoo计划的Werkzeug和Jinja2。

Werkzeug

Werkzeug是给Python编程语言的实用工具库，是用于Web服务器网关接口（WSGI）应用的工具箱，并在BSD许可证下发行。Werkzeug可以为请求、响应和实用功能实现软件对象。它可被用于在其上建造定制的软件框架，并支持Python 2.7和3.5及以后版本[13][14]。

Jinja

主条目：Jinja2

Jinja也是Ronacher创作，是给Python编程语言的模板引擎（英语：Web template system），并在BSD许可证下发行。类似于Django web框架，它在沙盒中处理模板。

## 特色[编辑]

* 內建開發用伺服器和调试器
* 整合的單元測試支持
* RESTful请求分派
* 使用Jinja2模板引擎
* 支援安全cookie（客户端会话）
* 100%的WSGI1.0相容
* 基于Unicode
* 詳細的文件、教學
* Google App Engine相容
* 可用Extensions增加其他功能

## 範例[编辑]

以下的程式為印出Hello World的網頁程式：

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
return "Hello World!"

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

## 參見[编辑]

* 自由软件主题

* 各網頁框架系統的比較
* Bottle

## 參考[编辑]

1. ^ Release 3.0.3. 2024年4月7日  [2024年4月23日].
2. ^ Flask-extension.  [2012-02-09]. （原始内容存档于2018-05-17）.
3. ^ What challenges has Pinterest encountered with Flask?.  [2022-08-21]. （原始内容存档于2023-07-22）.
4. ^ Rachel Sanders: Developing Flask Extensions - PyCon 2014.  [2022-08-21]. （原始内容存档于2017-07-31）.
5. ^ Pocoo Team.  [2017-06-15]. （原始内容存档于2015-11-10）.
6. ^ Ronacher, Armin. Opening the Flask (PDF).  [September 30, 2011]. （原始内容存档 (PDF)于2012-03-30）.
7. ^ Denied: the next generation python micro-web-framework (April Fools page).  [September 30, 2011]. （原始内容存档于2011年9月4日）.
8. ^ History. Pocoo Team.  [2015-03-25]. （原始内容存档于2017-11-19）.
9. ^ Ronacher, Armin. Hello Pallets Users. The Pallets Projects. 2016-04-01  [2021-05-08]. （原始内容存档于2022-07-04）.
10. ^ Pocoo. www.pocoo.org.  [2021-05-08]. （原始内容存档于2022-08-03）.
11. ^ Python Developers Survey 2018. www.jetbrains.com. 2018-11-01  [2022-08-21]. （原始内容存档于2022-09-03）.
12. ^ Python libraries by GitHub stars. Github.  [2020-01-27]. （原始内容存档于2022-01-07）.
13. ^ Ronacher, Armin. Werkzeug The Python WSGI Utility Library. palletsprojects.com.  [27 May 2018]. （原始内容存档于2021-06-01）.
14. ^ Ronacher, Armin. Installation, Python Version. palletsprojects.com.  [20 April 2020]. （原始内容存档于2021-05-11）.

## 外部連結[编辑]

* 官方网站

* 查
* 论
* 编

Web应用框架

* 比较

C++|

* CppCMS（英语：CppCMS）
* Wt（英语：Wt (web toolkit)）

CLI|

* ASP.NET
* Core
* AJAX
* 动态数据（英语：ASP.NET Dynamic Data）
* MVC
* Razor（英语：ASP.NET Razor）
* Web Forms
* DNN（英语：DotNetNuke）
* BFC（英语：Base One Foundation Component Library）
* MonoRail（英语：MonoRail (software)）
* OpenRasta（英语：OpenRasta）
* Umbraco

ColdFusion|

* CFWheels
* ColdBox Platform（英语：ColdBox Platform）
* ColdSpring（英语：ColdSpring Framework）
* Fusebox（英语：Fusebox (programming)）
* Mach-II（英语：Mach-II）
* Model-Glue（英语：Model-Glue）

Common Lisp|

* Caveman2（英语：Caveman2）
* CL-HTTP（英语：CL-HTTP）
* UnCommon Web（英语：UnCommon Web）
* Weblocks

* Vibe.d（英语：Vibe.d）

Haskell|

* Happstack（英语：Happstack）
* Yesod（英语：Yesod (web framework)）
* Snap（英语：Snap (web framework)）

Java|

* AppFuse（英语：AppFuse）
* Flexive（英语：Flexive）
* Grails（英语：Grails (framework)）
* GWT
* ICEfaces（英语：ICEfaces）
* ItsNat（英语：ItsNat）
* JavaServer Faces
* JHipster（英语：JHipster）
* Jspx（英语：Jspx-bay）
* JWt（英语：JWt (Java web toolkit)）
* OpenXava（英语：OpenXava）
* Play
* Reasonable Server Faces（英语：Reasonable Server Faces）
* Remote Application Platform（英语：Remote Application Platform）
* RIFE（英语：RIFE）
* Seam（英语：JBoss Seam）
* Spring
* Stripes（英语：Stripes (framework)）
* Struts
* Tapestry
* Vaadin（英语：Vaadin）
* Vert.x
* WebWork（英语：WebWork）
* Wicket
* WaveMaker（英语：WaveMaker）
* ZK

JavaScript|

* Ample SDK（英语：Ample SDK）
* Angular（英语：Angular (application platform)）/AngularJS
* Backbone.js
* Chaplin.js（英语：Chaplin.js）
* Closure（英语：Google Closure Tools）
* Dojo Toolkit
* Ember.js
* Extjs
* JQuery
* Meteor（英语：Meteor (web framework)）
* MooTools（英语：MooTools）
* Node.js
* Prototype
* React
* Rico
* script.aculo.us（英语：script.aculo.us）
* Sencha Touch（英语：Sencha Touch）
* SproutCore（英语：SproutCore）
* Vue.js
* Wakanda（英语：Wakanda (software)）

Perl|

* Catalyst
* Dancer（英语：Dancer (software)）
* Mason（英语：Mason (Perl)）
* Maypole
* Mojolicious（英语：Mojolicious）
* WebGUI

PHP|

* CakePHP（英语：CakePHP）
* CodeIgniter
* Fat-Free
* FuelPHP
* Gyroscope（英语：Gyroscope (software)）
* Horde（英语：Horde (software)）
* Kohana（英语：Kohana (framework)）
* Laravel
* Lithium（英语：Lithium (software)）
* Midgard（英语：Midgard (software)）
* MODX（英语：MODX）
* Nette（英语：Nette Framework）
* Phalcon
* PRADO（英语：PRADO (framework)）
* Qcodo（英语：Qcodo）
* Silex（英语：Silex (web framework)）
* SilverStripe
* Symfony
* TYPO3
* Xaraya（英语：Xaraya）
* XOOPS
* Yii（英语：Yii）
* Zend framework

Python|

* BlueBream
* Bottle
* CherryPy
* Django
* Flask
* Grok（英语：Grok (web framework)）
* Nevow（英语：Nevow）
* Pyjs（英语：Pyjs）
* Pylons
* Pyramid
* Quixote
* TACTIC
* Tornado
* TurboGears
* web2py
* Webware（英语：Webware for Python）
* Zope 2

Ruby|

* Camping（英语：Camping (microframework)）
* Merb（英语：Merb）
* Padrino（英语：Padrino (web framework)）
* Ruby on Rails
* Sinatra（英语：Sinatra (software)）

Rust|

* Yew

Scala|

* Lift
* Play
* Scalatra（英语：Scalatra）

Smalltalk|

* AIDA/Web（英语：AIDA/Web）
* Seaside（英语：Seaside (software)）

其他语言|

* Application Express（英语：Oracle Application Express）（PL-SQL）
* Grails（英语：Grails (framework)）（Groovy）
* Kepler（英语：Kepler (software)）（Lua）
* OpenACS（英语：OpenACS）（Tcl）
* Phoenix（英语：Phoenix (web framework)）（Elixir）
* SproutCore（英语：SproutCore）（JavaScript-Ruby）
* Yaws（Erlang）

* 查
* 论
* 编

Python web框架

* BlueBream
* Bottle
* CherryPy
* CubicWeb（英语：CubicWeb）
* Django
* FastAPI（英语：FastAPI）
* Flask
* Grok
* Nagare（英语：Nagare (web framework)）
* Nevow（英语：Nevow）
* Paste（英语：Python Paste）
* Pyjs（英语：Pyjs）
* Pylons
* Pyramid
* Quixote
* Spyce（英语：Spyce (software)）
* TACTIC
* Tornado
* TurboGears
* Webware（英语：Webware for Python）
* web2py
* Zope 2

*[查]: 查看该模板
*[论]: 讨论该模板
*[编]: 编辑该模板