Flask/Bottle项目组织
我最近在研究Python的微框架,发现了两个有趣的选择,Flask和Bottle。它们有一些相似的功能。我注意到所有的示例网站都把应用程序的代码放在一个单独的Python文件里。显然,对于稍微大一点的网站,这样管理起来会很麻烦。那么,这两个框架有没有支持把代码分散到不同文件里的功能呢?如果有的话,应该怎么做呢?
我对Django比较熟悉,喜欢它的结构比较清晰,但我更想用一些轻量级的框架,同时又要有足够的功能。
5 个回答
我知道有一些人开始参考我写的关于如何用Flask做这个的文章,当然,根据项目的大小,还有其他的方法可以选择;即使我在小项目中也会放弃目录类型的模块,改用文件类型的模块。可以看看这个链接:http://www.cols-code-snippets.co.uk/2011/02/my-take-on-flask-application-skeleton.html
我看不出有什么办法可以让这个不工作。Flask和Bottle就像Django一样,底层都是用Python写的,而Python允许你把文件拆分成模块。只要你把相关的函数导入到主脚本中,它们就会像在主脚本里定义的一样正常工作。
我对Bottle没有什么经验,不过可以看看Flask的文档,里面讲了如何处理更大的应用。我的Flask应用都按照那页的建议,使用多个Flask的Module
对象,每个Python模块一个,效果很好。
关于Module
对象,有个好处就是你可以为每个对象自定义处理方式,这样可以在你的应用中创建不同的URL路由“域”。比如说,我在代码中想模仿一个Windows应用,所以我做了一个CaseInsensitiveModule
,它可以忽略大小写来处理请求。此外,我还设置了一个RemoteModule
,用Flask/Werkzeug的路由系统把HTTP请求转成Python方法。
(注意,在当前的Flask版本中,Module
现在叫做Blueprint
。)