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