基于 WerkzeugWSGI工具箱和 Jinja2模板引擎。使用 BSD 授权。Flask也被称为 “microframework” ,因为它使用简单的核心,用 extension 增加其他功能。Flask没有默认使用的数据库、窗体验证工具。然而,Flask保留了扩增的弹性,可以用Flask-extension加入这些功 能:ORM、窗体验证工具、文件上传、各种开放式身份验证技术。
bottle:是Python的一个简单、快速和轻量级的WSGI微型Web框架,整个框架只有一个文件模块,除了Python 标准库之外,没有其他依赖项。
对比几点:
如果只看 hello world 的 demo,这两个应该没啥区别。 不过如果你愿意,flask 是可以和 django 同规模的框架,不同之处在于 django 是组装好的家具,flask 要你自己拧螺丝。
说实话,虽然看起来bottle设计的更简洁,但是实际开发的时候,就会觉得flask设计的更贴心,比如url_for,模板里面用config,等等
Bottle作为一个微框架,本身确实有些小型项目的缺点,尝试列举如下:
没有原生支持unicode
例如route('/
')获取的name并不是unicode类型,get和post的参数也默认并非unicode类型,虽然作者后来在0.10版本中给query和forms加入attr方式来解决这个问题,但是还是有所限制
而flask则是 unicode based,对unicode支持的非常好
影响力小,与其他组件的结合比较差
一个典型的例子就是wtforms不支持bottle的files字段,而flask虽然也不支持,但是flask的插件flask-wtforms则完美修正了这个问题
功能太基本
关于这一点,可以说是优点也可以说是缺点。绝对的纯粹看起来是件好事,但是真正开发起来又发现完全不是那么回事,自己要重新开发的轮子实在太多了。比如session的支持
bottle由个人开发,有些地方并不那么专业
反观flask,不能说flask的一切都是好的,但是确实在这几点上要比bottle做的要好一些,而且flask还有一些很实用的功能,比如实时debug,还有一些很实用的函数如url_for,而且flask与django确实有很大的相似性,这对flask本身的成熟度有很大的提高。
4.当然,实事求是,flask确实在设计上要比bottle复杂了很多,而且依赖了werkzeug,Bottle 自身并没有提供Session的支持,,可以使用beaker中间件或自己实现。