我试图用Flask创建一个简单但不平凡的应用程序,并且我一直遇到在文档中没有很好解释的情况。烧瓶应用程序的结构
我想不同模块之间被分割我的应用程序,但它看起来像它很难从其他地方比主模块进入主app
对象(或db
从flask-sqlalchemy
)。看起来你必须真正写出你自己的方式来把它看作是一切都可以访问的全局,这需要一些有问题的代码和一些时间。
app
和db
都是在实例化主应用程序的级别创建的,每个示例都假定它们在顶层可用。但是,如果我将不同的url处理程序分成不同的模块,我将失去使用@app.route
修饰器的能力。我可以用app.add_url_rule('/...', some.module...)
解决这个问题,但是再次,应用程序不会传递给该函数。
同样的事情发生在db
- 我不知道我是否应该坚持到g
,或通过app
以某种方式访问它。这样做并不能帮助我将模型移动到单独的模块中,但是如何在导入模型时访问db
?所有示例再次假定它只是作为局部变量提供。
我错过了一些明显的东西,还是我想在这里用错误的任务烧瓶?
装饰器只是功能包装。您可以创建一个封装所有服务器逻辑的类,并将类中的所有'db'和'app'变量存储在该类中。 – Blender 2012-07-13 00:12:50
@Blender当然,有很多方法可以手工解决这个问题。我真正想知道的是,如果有任何标准的方式来处理它,并且如果它似乎完全从文档中丢失,那么还有没有更多的惊喜。我期待从瓶子本身出现某种更明显的解决方案。 – viraptor 2012-07-13 00:19:51
您可以使用Blueprint – user956424 2013-06-24 07:33:53