我一直在研究 Python 的微框架,并且遇到了两个有趣的选项,Flask 和 Bottle。每个都有一些相似的功能。我注意到的一件事是,所有示例站点都显示了位于单个 Python 文件中的所有应用程序代码。显然,即使是中等规模的站点,也很难很快地进行管理。这些框架中的任何一个(或两个)是否支持在不同文件之间进行拆分,如果支持,将如何实现?
我熟悉 Django,并且喜欢它的结构化程度,但我宁愿使用更轻量级但仍然强大的东西。
我对 Bottle 没有任何经验,但请查看有关大型应用程序的Flask 文档。我的 Flask 应用程序都使用该页面推荐的多个 FlaskModule
对象,每个 Python 模块一个,它似乎工作得很好。
对象的优点之一Module
是您可以自定义每个对象的调度以在您的应用程序中创建 URL 路由“域”。例如,我试图在我的一些代码中模仿一个 Windows 应用程序,所以我有一个CaseInsensitiveModule
不区分大小写的调度,并且我RemoteModule
使用 Flask/Werkzeug 路由系统将 HTTP 请求转换为 Python 方法。
(请注意,在当前的 Flask 版本中,Module
s 现在Blueprint
是 s。)
我看不出有什么办法可以阻止它工作。Flask 和 Bottle 和 Django 一样,只是底层的 Python,而 Python 允许您将文件分解为模块。只要您将相关函数导入到主脚本中,它们就可以像在那里定义的那样工作。
我知道有些人已经开始使用我自己的文章来使用 Flask 进行此操作,尽管根据项目的大小显然还有其他方法可以做到这一点;即使我为较小的项目删除了基于文件的目录类型模块。看看http://www.cols-code-snippets.co.uk/2011/02/my-take-on-flask-application-skeleton.html
我最近发布了一篇关于如何在 Google App Engine 中开始使用 Bottle+Jinja2 的教程。我这里的重点是如何组织项目文件。您也许可以获得可以使用的东西: http: //codeaspoetry.wordpress.com/2011/11/27/how-to-build-a-web-app-using-bottle-with-jinja2-in-谷歌应用引擎/
这真的取决于你想要实现的目标,因为微服务/应用程序/网站瓶子非常简单且重量轻。如果你计划你的应用程序在那个时候增长,那么 Flask 对你来说可能是一个不错的选择,因为它有很多扩展。我们有大约 40 到 50 个用瓶子编写的微服务,从未遇到任何问题。