爱测未来开发-Flask:从Hello World到大型应用 (二)

上一篇我们讲到了用blueprints实现应用模块化,但一个Hello World算不上一个完整的应用。这一期我们从一个个人Blog的搭建讲怎么构建一个实际的应用。

实例代码可以参考:

https://github.com/yeahx/microtype

一、blueprints 与 应用解耦

问:为什么要解耦?

答:我们使用blueprints 的目的就是为了应用模块化,为了复用,如果不能解耦,那么就很难复用,会重复好多的代码或者需要大量的修改,这就违背了模块的初衷。

问:什么地方需要解耦?

答: 首先最直接的地方就是数据model部分。

每个 blueprints 并不是一个独立的应用,它可以被 register_blueprint (参见上次测示例代码或官方文档)多次,如果每个blueprints 都有自己数据库当然最好,但是我们的个人Blog并不会使用那么多数据库,而且如果众多blueprints 使用的都是同一种数据库的,每个 blueprints  都对数据库进行一次包装是浪费的,数据库部分的工作应当放到Flask应用层。

那么紧接着就有了新的问题,怎么解耦?

Flask应用引用blueprints 对其进行注册,blueprints 引用应用的数据库,这不是循环引用了吗? 其实上次的文中我们已经提供了思路,使用 包管理

于是我们的顶层目录看起来就是这个样子:


而每个  blueprints  自成体系,我们在 database.py 这个文件中,定义了应用的数据库对象。这里使用的是 flask-mongoengine ,如果你想使用其他数据库,请参照其文档进行修改。


这样,如果想在其他地方使用这个 blueprints 只需要更改导入的路径和名称就可以了。(其实还有别的办法,小编先卖个关子,,)

解耦部分还有模板,静态文件,这些在定义blueprints 时可以简单的设置,这里就不再赘余。

二、flask与Django并存

上次说到,我们最终选择了一个折中的方案,保留原始部分,新内容使用flask写。那这两个不同的框架又是怎么整合到一块的呢?

这就要讲一下flask的来源。 werkzeug (框架)的作者演示他的框架怎么构建一个web框架,于是乎flask就诞生了。flask是建立在werkzeug上的WSGI 应用,因此每个flask在任何 WSGI 服务器上运行,于是,只要在django得到WSGI 应用,就可以将两者统一到一起

注:代码参看flask文档,这只是开发环境,实际部署之后会再细说。

这样两个或多个WSGI 应用就可以同时运行了。思维敏捷的你肯定想到了,这不仅可以用于flask、django的并存啊,两个flask应用也可以啊。

小结:

这一期,主要是blueprints 数据model如何定义和怎么保持原来内容。理论的太多,具体代码没有贴几行,如果想实例学习,可以参见文章前面的github地址。


公众号:itest_forever


CSDN:http://blog.csdn.NET/itest_2016

QQ群:274166295(爱测未来2群)、610934609(爱测未来3群)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值