Flask扩展系列(七)–表单

表单Form,在Web应用中无处不在。在介绍Flask入门时,我们曾经做过一个非常简单的用户登录表单。其实所有的表单项都有共性,比如有文字输入框,单选框,密码输入框等;此外表单的验证也有共性,比如有非空验证,长度限制,类型验证等。如果有个框架,能把这些共性抽象出来,那就能大量简化我们的工作。Python的WTForms就提供了这些功能,这里我们就要结合Flask的WTForms扩展,Flask-WTF,来介绍如何在Web应用中制作表单。

Flask扩展系列(六)–缓存

如果同一个请求会被多次调用,每次调用都会消耗很多资源,并且每次返回的内容都相同,大家第一个反应就是该使用缓存了。的确对于大规模互联网应用,缓存是必不可少的,一个好的缓存设计可以使得应用的性能几何级数地上升。本篇我们将阐述如何缓存Flask的请求,并同时介绍一个缓存扩展,Flask-Cache。

Flask扩展系列(五)–MongoDB

MongoDB是一个文档型数据库,它灵活的Schema,多层次的数据结构和JSON格式的文档使得其已经成为了NoSQL阵营的领头羊。Flask的MongoDB扩展有很多,比如Flask-MongoAlchemy,基于MongoAlchemy实现,非常类似于上一篇所介绍的SQLAlchemy;Flask-MongoKit,基于MongoKit实现,同MongoAlchemy类似,需要预先定义数据模型。不过MongoDB的一大优势就是数据模型,即Collection,是灵活的,如果可以不限制数据模型的字段,将会更大程度的发挥MongoDB的优势,Python的PyMongo框架就可以做到这个。本篇我们就要介绍基于PyMongo实现的Flask扩展,Flask-PyMongo。

Flask扩展系列(四)–SQLAlchemy

熟悉Java的朋友们一定使用过Hibernate或MyBatis吧,这类的框架称为对象关系映射ORM框架,它将对数据库的操作从繁琐的SQL语言执行简化为对象的操作。Python中也有类似的ORM框架,叫SQLAlchemy。本篇我们将介绍Flask中支持SQLAlchemy框架的第三方扩展,Flask-SQLAlchemy。

Flask扩展系列(三)–国际化I18N和本地化L10N

在Jinja2系列中,我们曾经介绍过Jinja2模板的i18n扩展,它可以实现模板中内容的本地化翻译。这里,我们要介绍一个Flask扩展,Flask-Babel。它同Jinja2的i18n扩展一样,可以翻译Jinja2模板中的内容,以及Flask代码中的文字内容。同时它还可以翻译日期格式等等。它也是基于Babel和gettext等组件实现,有着非常简单友好的API接口,便于我们使用。

Flask进阶系列(八)–部署和分发

到目前为止,我们启动Flask应用都是通过”app.run()”方法,在开发环境中,这样固然可行,不过到了生产环境上,势必需要采用一个健壮的,功能强大的Web应用服务器来处理各种复杂情形。同时,由于开发过程中,应用变化频繁,手动将每次改动部署到生产环境上很是繁琐,最好有一个自动化的工具来简化持续集成的工作。本篇,我们就会介绍如何将上一篇中Flask的应用程序自动打包,分发,并部署到像Apache, Nginx等服务器中去。

使用Nginx和uWSGI来运行Python应用

uWSGI是一个Web应用服务器,它具有应用服务器,代理,进程管理及应用监控等功能。它支持WSGI协议,同时它也支持自有的uWSGI协议,该协议据说性能非常高,而且内存占用率低,为mod_wsgi的一半左右,我没有实测过。它还支持多应用的管理及应用的性能监控。虽然uWSGI本身就可以直接用来当Web服务器,但一般建议将其作为应用服务器配合Nginx一起使用,这样可以更好的发挥Nginx在Web端的强大功能。本文我们就来介绍如何搭建uWSGI+Ngnix环境来运行Python应用。

在Apache中运行Python WSGI应用

在生产环境上,一般会使用比较健壮的Web服务器,如Apache来运行我们的应用。如果我们的Web应用是采用Python开发,而且符合WSGI规范,比如基于Django,Flask等框架,那如何将其部署在Apache中呢?本文中,我们就会介绍如何使用Apache模块mod_wsgi来运行Python WSGI应用。