Flask 项目推介:新锐女性化妆品分享网站“优容网”技术架构分析
较早之前写过一篇“便宜否”的淘宝客应用项目,是用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/
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。