【问题标题】:What's your folder layout for a Flask app divided in modules?Flask 应用程序分为模块的文件夹布局是什么?
【发布时间】:2011-08-30 15:33:30
【问题描述】:

我正在试验来自 Django 的 Flask,我非常喜欢它。我遇到的只有一个问题。我阅读了烧瓶文档以及有关大型应用程序或类似内容的部分,它解释了一种将项目划分为包的方法,每个包都有自己的静态和模板文件夹以及自己的视图模块。问题是我找不到一种方法可以使用带有 Flask 扩展的 SQLAlchemy 将模型放入其中。它可以从交互式提示中创建表格,但是当我在代码中使用它时它会中断。所以我想知道更有经验的 Flask 开发人员是如何解决这个问题的。

【问题讨论】:

    标签: python flask flask-sqlalchemy


    【解决方案1】:

    虽然我还没有准备好宣布,因为我仍在积极改进样本,但您可能会从我正在开发的 flask-skeleton 项目中受益。我厌倦了重新发明关于引导 Flask 网站的轮子,所以我开始使用我的最佳实践创建一个完整的示例项目。我还没有添加任何单元测试,但这应该足以让你开始。如果您遇到任何问题,请给我反馈或建议。

    https://github.com/sean-/flask-skeleton/

    【讨论】:

    • 非常感谢您的链接。但是在最新版本的 Flask 中是否需要所有这些引导?只是问问而已。我把所有的工作都分成了模块,它可以工作。我添加模型的那一刻,它就坏了。也许我很想 Django 它。在模型的顶部从主应用程序导入 db 并返回错误“无法在'文件名'中导入名称数据库”这里会发生什么?
    • 您可能会遇到循环导入(这就是我在创建应用程序后进行模型导入的原因)。 Flask-SQLAlchemy 也广泛使用 LocalProxy 来帮助解决其中的一些问题。
    • 肖恩,我看过你的骨架,这是解决这个问题的好方法。但是在大多数情况下它非常重。而且它没有实现两个关键特性。 1. 它需要在 HTML 5 样板中烘焙 2. 它只使用模块,不使用蓝图
    • 在所有帐户上都正确,这是一个 0.7 之前的示例,并不是一个简单的“hello world”博客文章应用程序。我有一个更新版本,我需要坐下来推送,可能会在下周左右发布。查看 Flask 邮件列表以获取我的另一篇文章,以获得更轻量级的示例。
    【解决方案2】:

    实际上,我发现了我要找的东西。而不是在主 __init__ 上导入 flaskext.sqlalchemy,而是在模型中导入它。之后,您将模型导入主 __init__ 并使用 db.init_app() 启动它并传递应用程序配置。它不像@Sean 帖子中显示的骨架那样灵活,但这是我想知道的。如果我不是在玩弄,那骷髅可能就是我会使用的那个。

    【讨论】:

    • 当我最初开始使用 Flask 时,整个“引导数据库模型”不如我希望的那么直观,但这主要是因为我直接访问 SQLAlchemy 而不是 Flask-SQLAlchemy。我终于找到了重新制作轮子的方法,这就是为什么要拼凑出骨架。
    • 是的,它真的很棒!事实上,我将在我的另一个项目中使用它。这只是您真正想知道如何以某种方式完成它的那些编程烦恼之一。我发现它在现实世界中实际上是无用的,但我玩得很开心。
    • 很高兴听到。我周末的大部分时间都在忙于登录/注册和会话代码,这对框架进行了重大改革。我对会话管理仍然如此糟糕感到有点震惊......在我重新发明那个轮子之前要检查一下 Beaker。无论如何,仅供参考。
    • 太棒了!遵循 github 上的骨架 repo,所以一旦它发生变化,我会看看。也许正如您要求对此提供一些反馈,也许还有其他形式的参与。
    猜你喜欢
    • 2011-04-28
    • 1970-01-01
    • 1970-01-01
    • 2019-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    • 2016-10-02
    相关资源
    最近更新 更多