0开篇Flask mega-tutorial(Flask超级教程)

如需转载请注明出处。
win10 64位、Python 3.6.3、Notepad++、Chrome 67.0.3396.99(正式版本)(64 位)
注:作者编写时间2017-12-06,linux、python 3.5.2

以下内容均是加入自己的理解与增删,以记录学习过程。不限于翻译,部分不完全照搬作者Miguel Grinberg的博客,版权属于作者,感谢他提供免费学习的资料。

传送门
00 开篇 01 Hello world 02 模板 03 Web表单
04 数据库 05 用户登录 06 个人资料和头像 07 错误处理
08 关注 09 分页 10 支持QQ邮箱 11 美化页面
12 时间和日期 13 I18n和L10n 翻译成中文 zh-CN 14 Ajax(百度翻译API 15 更好的App结构(蓝图)
16 全文搜索 17 部署到腾讯云Ubuntu 18 部署到Heroku 19 部署到Docker容器
20 JavaScript魔法 21 用户通知 22 后台工作(Redis) 23 应用程序编程接口(API)
首先,认识一下: web开发框架(Web application framework)

是用来进行web应用开发的一个软件架构(或一组库和模块)。用来支持动态网站、网络应用程序、网络服务的开发。其类型有基于请求的和基于组件的两种框架。
有助于减轻网页开发时共通性活动的工作负荷,例如许多框架提供数据库访问接口、标准样板以及会话管理等,可提升代码的可再用性。再如不必担心如协议,线程管理等低层细节。

有网友举了个形象例子,可用来加深理解【框架】含义:将框架比作素描的结果,在素描的基础上涂上合适的颜色,就成为一副漂亮的画了。

其次,了解一下:Flask。第一个版本诞生于2010年,源于Flask作者一个愚人节玩笑,后来由于非常受欢迎,进而成为一个正式项目。

0.谷歌翻译flask [flɑ:sk],译作:;[化]烧瓶;[机]沙箱。打开Flask官网,看到最简洁的一句话:web development,one drop at a time。译作:web开发,一点一滴。一步一步地用Flask进行web开发。
一开始:Flask开发者为啥命名其为【译作】“烧瓶”,像用烧瓶在做化学实验一样,用滴管一点一滴进行实验?[大笑脸]。我像应该不是的!!
0开篇Flask mega-tutorial(Flask超级教程)_第1张图片
根据Flask官方logo,这个牛角状、辣椒状的logo,在中国21世纪的coder可不好理解为“壶”。Quora有人认为是:由动物犄角制作,通常用来装火药(火药?这是什么骚操作?你自己去研究吧),而不是装水的壶。
其实,百度搜索关键字“牛角火药桶/罐”,得到的结果倒是很给力,应该是答案。古代猎人用牛角来装火药,用那头小孔向枪管里放火药,火药更不会撒。
真正是什么玩意,去问Armin ronacher吧。哈哈。不过谷歌搜索图片关键字“flask”,大部分结果是【水壶】(现代),当然也有【烧瓶】。
总结:它是什么无所谓,重点是你了解过。

1.Flask是一个BSD许可的基于Werkzeug、Jinja2的Python(语言编写) Web微框架(microframework,一个轻量级的 Web 应用框架)。

其中,WSGI工具箱采用Werkzeug(路由模块),它用Python编写的遵守WSGI协议的一个包;
模块引擎使用Jinja2。这两者是Flask框架的核心
PS:
a. Web服务器网关接口(WSGIWeb Server Gateway Interface)已被采纳为Python Web应用程序开发的标准。 WSGI是Web服务器和Web应用程序之间通用接口的规范;
b. Werkzeug是一个WSGI工具包(不是一个web服务器,也不是一个web框架),作为一个Web 框架的底层库,它实现(封装)了请求Request、响应对象(Response)和其他实用程序功能。 这可以在其上构建Web框架。 Flask框架使用Werkzeug作为其一个基础模块之一;
注意:Werkzeug对python3的支持并不好,所以如果使用Flask框架推荐使用python2。不知道截止现在(2018-08-01)改进了没有。
c. Jinja2是Python的流行模板引擎。网页模板系统模板特定的数据源结合起来呈现动态网页
Jinja2是Python世界的一款高人气template engine,是许多开源Web框架的选择,包括Flask这样的明星级项目。(据说:选择 Jinja 作为名字是因为 Jinja 是日本寺庙的名称,并且 temple 和 template的发音类似)

Flask其本身相当于一个内核,其他几乎所有功能都要用到第三方扩展来实现,如:用Flask-extension加入ORM、窗体验证工具、文件上传、身份验证等功能;用Flask-Mail实现邮件扩展、Flask-Login实现用户认证。

2.Flask没有默认使用的数据库,可选择MySQL,也可选择NoSQL。

3.Flask还是一个MVC框架。

再次,见识一下牛逼的作者:Armin ronacher
0开篇Flask mega-tutorial(Flask超级教程)_第2张图片
Flask Web框架的原始创建者。现在各处去演讲,羡慕。
1989年生,80后程序员。说是90后也不为过,哈哈。牛逼,我顿时流下没技术的泪。据说毕业于Mines Paris Tech,一所法国顶尖的精英工程师学校。
其个人网站、Twitter、wiki、领英

最后,选择一个适合你自己的Web框架。
目前Python主流Web框架有Django和Flask。比较:

  1. Django是一个较重量级框架,是一个大而全的 Web 系统,即几乎所有功能都帮助开发者写好了,有时如果只是想做一个简单网站,并不需要太多功能,这时使用Django,就不合适了,因为在部署网站时会导致很多不必要的功能也部署了进来。
  2. Flask是一个轻量级框架,只是实现一些核心功能,旨在保持应用程序的核心简单且可扩展。但是实现的功能并没有Django那么多,这样可自由发挥、DIY、自行组装啊。在Flask的基础上,如果想实现更多的功能,可以很方便地支持扩展以加入。

很多时候,后者就足够应付 80%的业务,前者则有种杀鸡用牛刀的节奏。而Flask也可以编写大型项目,可能有些人会觉得Django 太臃肿了,Flask 的组织方式比较清新。

其他用于web开发的Python框架:Tornado、CubicWeb、Web2py、web.py等。当然你也可以不用框架,自己写,哈哈!

学习参考文档:提供如此多的文档,是为了更好地学习。避免各种情况的发生(如网站打不开了等)
0、 The flask mega-tutorial 作者(miguelgrinberg)博客,也是本Flask超级教程的正宗来源;
1、Flask官方文档:1.0.2版本。(截止写本文时间2018-08-01);
2、Flask在线【中文】文档:1.0版本(稳定);
3、pypi Flask 英文文档:1.0.2版本;
4、作者源码GitHub;
5、The flask mega-tutorial在线中文教程:1.1版本。

如需转载请注明出处。

你可能感兴趣的:(Python,3.X,flask,flask,python,web,tornado,web开发,jinja2)