为了提高测试效率,组内使用了Flask框架开发了一些工具, 自己也跃跃欲试,目前完成了一个小工具的开发全流程, 还是挺有收获滴

首先分享下基本的概念, 后续分享入门实战


 

一,理论介绍

1,Flask是Python编写的轻量级web应用框架,由奥地利帅哥Armin Ronacher于2010年发布

在Github上,Flask热度有51.9k,高于广泛使用的Django的51.8k。

Flask主要由Werkzeug(WSGI工具包)与Jinjia2模板引擎组成,前者负责业务处理,后者负责HTML模板渲染。

Flask拥有的Werkzeug路由系统,完全兼容WSGI标准,WSGI几乎兼容绝大部分web服务器,这样Flask可以运行在大部分的web服务器。

2,Jinjia2模板引擎来源并优于Django模板引擎,支持模板继承,提高代码复用率,对HTML自动转义,避免XSS攻击,对unicode的支持等等。

Flask设计思想,提供一个灵巧方便扩展可以快速开发的应用,不仅能快速开发而且有很强的扩展性,把很多决定权交给开发,根据不同业务需求定制自己的插件库,属于典型的微框架。

3,不像一站式Django包含web应用的几乎所有插件, Flask没有默认数据库, 没有表单验证插件, 这些都交给开发根据自身业务需求扩展。

Flask的扩展丰富,有比较强大的社区, 应用扩展库也能像Flask原生的一样。

灵活也是双刃剑,开发者能自由选择数据库,表单验证等第三方插件,同样相比一站式齐全的框架如Django,需要花费更多时间去选择这些第三方库。

二 ,Jinjia2模板引擎

Werkzeug与Jinjia2是Flask的核心

Werkzeug是WSGI(Web Server Gateway Interface)工具箱,负责功能业务实现,例如路由集成,http事务处理,cookie管理等,可以理解为socket服务,负责http请求底层的实现。

WSGI是Python应用程序或框架与web服务器之间的接口,对web服务器与web应用程序或框架相互配合作出规范。

只要满足WSGI规范,web应用程序可以运行于任何支持WSGI的web服务器,反之亦然。

Jinja2是一个模板引擎

负责HTML模板渲染,支持模板继承,极大地提高了模板复用率;系统运行很快,编译过程会将html代码转换为python字节码,提高运行速度。设计思想来源于django模板引擎,扩展了语法以及沙箱执行,自动转义等强大功能。

以上是Flask的基础介绍,接下来第二篇讲下如何开发一个flask web应用。

三,Flask的亮点

1 快速搭建,上手容易

2 优秀的Jinjia2模板引擎,从Django模板引擎发展而来,比Django模板使用起来更加自由高效,提供模板继承及自动抗击XSS跨站攻击

3 完全兼容WSGI1.0标准

WSGI是web应用或框架与web服务之间的重要协议,兼容此标准,Flask可以在大多数web服务器上运行

4 基于unicode编码

Flask完全基于Unicode

HTTP本身是基于字节的,任何编码格式都可以在HTTP传输,但是HTTP 要求在Header里显示的声明本次传输所用的编码格式 Flask会自动添加 UTF-8编码格式的HTTP head 程序员无须担心编码问题

5 内置开发调试器

自带的开发服务器,使得调试so easy, 不用安装网络服务器