Home » Flask 新闻 » Flask 项目推介:“优容网”技术架构分析
  • 28
  • 08月

作者:老秋(转眼几年过去,小秋都变成老秋了……)

较早之前写过一篇“便宜否”的淘宝客应用项目,是用web.py写的,当时也写过不少web.py的项目,大都是自己在内部使用,“便宜否”是为朋友写的唯一在外部使用的。学习flask也是朋友Davidx的推介。

先介绍下优容网(yoro.com),这是我flask的第二个项目,主要是做女性化妆品分享社区,希望女生通过这个平台能找到适合自己肤质的化妆品。

为什么选择 Flask?而不是 Django 或 web.py?

这个项目还有一个主力是cloud,参于服务器架构到核心代码编写。先说说为什么选择flask,最初我们都使用过django,都不喜欢django的紧耦合;试了下web.py,又发现虽然东西小,要自己写的东西太多了,特别是form和db方面;最后决定了flask,有django一样的templates和models风格,又有web.py的小巧,而且还有许多强大的第三方插件,团队pocoo.org也是比较靠谱的。

项目结构

受到django的影响,yoro的项目结构我们使用了独立app的形式,里面包含app各自的models,views和forms,这样使用的好处是分离app各功能,尽量做到独立应用,缺点是项目中的交叉引用会显得比较乱。

用到哪些 flask 插件?

  • flask_sqlalchemy: flask对sqlalchemy的插件,定义了一些方法,使创建models和输出query更方便
  • flask_wtf: 对wtforms的插件,默认加入了csrf功能(防止表单重复提交)和Recaptcha(验证码)
  • flask_uploads: 上传文件的插件
  • flask_cache: 缓存插件(支持memcached,gaememcached,filesystem,simple等)
  • flask_principal: 权限插件 (众多插件中比较复杂的一个, 但也是作用很大的一个),支持各种权限方式,较django admin的权限,我只能说,这个插件让你知道,权限其实很简单。
  • flask_mail: 发送邮件插件
  • flask_script: 项目管理插件,类似django的manager

当然还有很多有用的插件如flask_oauth,flask_themes,flask_babel等

主要功能

  • 用户系统
  • 站内邮件系统
  • 基本的sns(关注/我说)
  • 商品点评推荐
  • 任务平台
  • 兑换平台
  • 后台管理

技术细节

  • 站内邮件系统中有一项功能比较特别,当系统发送信息给所有用户,考虑到一次性存大量数据到数据库是不合理的,采用了lazy_load模式,只有当用户登录了,才会对用户发送信件。
  • SNS方面,使用了通用模块,类似django中的contenttype,将评论和推荐应用到了所有模块上。这个是flask里缺少的 功能。
  • yoro的对外邮件提醒功能,采用了rabbitMQ,这个队列异常强大。
  • logging项目日志功能,当项目在运行时,报过何种异常或是错误,都会邮件提醒,很酷吧。
  • 前端使用了较多的ajax调用,也较多的使用到了html5技术。ps: flask里的jsonify功能要慎用,ie6下面无法正常接收json的mime,需要使用text/html形式的

yoro 这个项目还在紧张的测试中,近期产品还会有一次大的调整,大家可以让自己的女性朋友试用试用,对产品提提建议,如果想探讨项目中使用到的技术,或是学习flask,欢迎给我写邮件。

关于作者

老秋是05年开始从事前端设计的设计师,于07年喜欢上python,目前从事python项目开发,学习并使用过一些流行框架,如django,webpy,flask,turbogears。

Gtalk: alawn84@gmail.com

地区:杭州

网站: http://www.laoqiu.com

豆瓣:http://www.douban.com/people/alawn84/

原文:http://simple-is-better.com/news/213