一、简介
Flask是使用Python编写的Web微框架(microframework),Flask仅保留了Web框架的核心,其他的功能都交给扩展实现,如果没有合适的扩展,大家甚至可以自己写。因此,Flask足够轻量,只用三五行代码就能编写出一个最简单的Web程序,但它并不简单。微微老师就曾经经轻看了它,现在看来,只是自己当时无知罢了。
因为Flask的简洁和灵活,越来越多的公司选择Flask作为Web框架,如国外Netflix(奈飞)、Reddit等,国内则有豆瓣、果壳等,这些已经说明Flask可以经受大型项目的挑战、能够适应各种需求。
Flask有两个主要依赖,一个是WSGI(Web Server Gateway Interface)工具箱--Werkzeug,另一个是Jinja2 模板引擎。
关于WSGI的介绍,请看前文:
Python进阶|一文说清WSGI接口
关于什么是模板引擎,Flask和Django都采用Jinja2来作为模版引擎。在Python中,什么是模版?就是在一个静态HTML加入一些类似变量的标签,然后引擎在渲染这个HTML时候会动态的把变量填入内容,生成一个最终的HTML。
什么是模版引擎?其实就是一种能解析类似Python语言的标记语言的解释器。比如我们在HTML模版中输入一个<p> {{ post.title }} </p>,显然这不是真正的HTML语法。但是当Jinja2解释器读取到{{ ...}}后知道里面是一个变量,那么就把这个变量替换为真正的值,最后翻译出来就变成了<p> 大标题 </p>这样的HTML内容。
由此可见,Flask只保留了Web开发的核心功能,其他功能都由外部扩展来实现,如数据库集成,表单认证、文件上传等,如果没有合适扩展,大家可以自己动手开发,Flask不会替你做决定,也不会限制你的选择。总之,Flask可以变成任何大家想要的东西,一切由你做主!
二、诞生
愚人节笑话很少有成真的,毕竟那只是一时娱乐而已。但同样的话,对于开发者社区来说或许有例外。Flask就是诞生于创始人Armin Ronacher 9年前的一个愚人节笑话。目前,Flask在Github网站上已经至少获得4万多个Star,已经跻身主流Python Web开发框架之列,这或许可以说是开发者社区最成功的愚人节笑话。根据Armin自己回忆,当时他注意到微框架开始流行,出现了很多类似web.py(Python)和camping(Ruby)的微框架。这些框架都没有外部的依赖包,而且只有一个文件,似乎特别受大家欢迎。所以他决定自己也开发一个这样的框架,娱乐一下。因为目的只是作为愚人节笑话,所以他只是利用现有的技术,将Werkzeug、simplejson和Jinja2打包进了一个文件,并添加了一些胶水代码。最终的产物就是一个名叫Denied的微框架。
为了让这个笑话更加可信、看上去更真实,他请人录制了一个视频,上线了一个网站,还找了几位知名Python开发者为这个框架背书。愚人节当天,Armin通过Twitter发布了Denied。开发者社区对此的反应出乎意料。Armin在4月3日总结此事时提到,视频三天内被下载了1万次,网站点击量超过5万。而且转推数量远远超过之前自己的纪录。
开发者们对这个项目的极大兴趣,促使Armin最终决定重新造轮子(reinventing the wheel),2010年4月6日在Github上发布了Flask。
Armin后来解释了自己开发Flask的两大原因:
灵活性更高,应用可能要求一些现有框架没有的东西
可以自己掌握全局,快速解决遇到的问题
最终的框架使用起来非常简单。用Flask开发的“Hello World”应用只要下面几行代码就可以了:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'HelloWorld!'
if __name__ == '__main__':
app.run()
运行结果如下:
发表评论 取消回复