其实之前就有写过关于python web开发框架选择的文章,之前最终选择了bottle,并给出了bottle开发的物理设计,详见之前的文章:回归简单,向Django说再见、bottle做web开发的物理设计,然而经过最近两个星期的实践,又有了一些新的想法。
Bottle作为一个微框架,本身确实有些小型项目的缺点,尝试列举如下:
- 没有原生支持unicode
- 影响力小,与其他组件的结合比较差
- 功能太基本
- bottle由个人开发,有些地方并不那么专业
例如route('/
而flask则是 unicode based,对unicode支持的非常好
一个典型的例子就是wtforms不支持bottle的files字段,而flask虽然也不支持,但是flask的插件flask-wtforms则完美修正了这个问题
关于这一点,可以说是优点也可以说是缺点。绝对的纯粹看起来是件好事,但是真正开发起来又发现完全不是那么回事,自己要重新开发的轮子实在太多了。比如session的支持
比如route的参数method=['GET','POST'],因为是数组,所以用methods更合适;request.forms其实用request.form更合适
再比如static_file函数,必须要求传入一个root_path和一个filename;而flask则有两个函数一个send_file和send_from_directory,支持直接返回file内容
反观flask,不能说flask的一切都是好的,但是确实在这几点上要比bottle做的要好一些,而且flask还有一些很实用的功能,比如实时debug ...