一、简介

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

运行结果如下:

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

热门产品

php编程基础教程.pptx|php编程培训,php,编程,基础,教程,pptx
php编程基础教程.pptx

历史上的今天:04月20日

ThinkPHP5快速入门基础

ThinkPHP5快速入门基础一、基础快速入门 ( 一 ) :基础本章介绍了 ThinkPHP5 .0 的安装及基本使用 ,并给出了一个最简单的示例带你了解如何开始开发 ,主要包 含 :简介官网下载 omposer安装和更新CGit下载和更新目录结构运行环境入口文件调试模式控制器视图读取数据总结在学习 ThinkPHP5.0 之前 ,如果你还不理解面向对象和命名空间的概念 ,建议首先去PHP手册恶

ThinkPHP5快速入门

ThinkPHP5快速入门目 录零、序言一、基础二、URL和路由三、请求和响应四、数据库五、查询语言六、模型和关联 (1)模型定义 (2)基础操作 (3)读取器和修改器 (4)类型转换和自动完成 (5)查询范围 (6)输入和验证 (7)关联 (8)模型输出七、视图和模板八、调试和日志九、API开发十、命令行工具十一、扩展十二、杂项SessionCookie验证

热门专题

云南开放大学|云南开放大学报名,云南开放大学报考,云南开放大学,什么是云南开放大学,云南开放大学学历,云南开放大学学费,云南开放大学报名条件,云南开放大学报名时间,云南开放大学学历,云南开放大学专业
云南开放大学
安徽开放大学|安徽开放大学报名,安徽开放大学报考,安徽开放大学,什么是安徽开放大学,安徽开放大学学历,安徽开放大学学费,安徽开放大学报名条件,安徽开放大学报名时间,安徽开放大学学历,安徽开放大学专业
安徽开放大学
昆明综合高中|昆明综合高中
昆明综合高中
一年制中专|中专学历,中专是什么学历,中专是什么,中专有什么专业,中专升大专,一年制中专
一年制中专
天麻的功效与作用吃法|天麻的功效与作用,天麻的功效与作用吃法,天麻炖什么治头痛最好,天麻的功效与作用禁忌,天麻多少钱一斤,天麻的功效与作用吃法及禁忌,天麻怎么吃效果最好,天麻粉的功效与作用,天麻怎么吃
天麻的功效与作用吃法
大理科技管理学校|大理科技管理中等职业技术学校,大理市科技管理中等职业技术学校
大理科技管理学校
云南综合高中|云南综合高中
云南综合高中
云南巨榕教育投资集团有限公司|云南巨榕教育投资集团有限公司,巨榕教育集团,巨榕教育
云南巨榕教育投资集团有限公司

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部