Flask

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

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()

參見

  • 自由软件主题

參考

  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). 

外部連結

  • 官方网站 在维基数据上编辑此内容
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
D
  • 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
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 ExpressPL-SQL
  • Grails英语Grails (framework)Groovy
  • Kepler英语Kepler (software)Lua
  • OpenACS英语OpenACSTcl
  • Phoenix英语Phoenix (web framework)Elixir
  • SproutCore英语SproutCoreJavaScript-Ruby
  • YawsErlang