【发布时间】:2023-03-22 17:08:01
【问题描述】:
我已将我的几个 sqlalchemy 模型提取到一个单独的可安装包 (../lib/site-packages) 中,以便在多个应用程序中使用。所以我只需要:
from models_package import MyModel
来自任何需要访问这些模型的应用程序。
到目前为止一切都很好,除了我找不到令人满意的方法来获取某些模型使用的几个依赖于应用程序的配置变量,这些变量可能因应用程序而异。所以一些模型需要知道一些变量,我之前使用过它们所在的应用程序。
都没有
current_app.config['XYZ']
或
config = LocalProxy(lambda: current_app.config['XYZ'])
已经工作(outside of application context 错误)所以我现在被卡住了。也许这是代表我的糟糕的编程和/或设计,那么如何解决这个问题?一定有什么办法,但我还没有理会自己。
解决方案:
避免在模块加载时发生的设置项(例如包含 api 键的常量),上述两种方法都应该起作用,而且它们确实有效。任何不使用那些在应用程序中使用的模型当然会出错,返回您需要的值的方法应该是好的。
【问题讨论】:
-
您是否尝试从您的
models_package导入应用程序对象(不是通过current_app代理)? -
models_package 是独立的,没有应用程序对象,模型从那里导入到应用程序中。
-
有时循环导入可以解决问题。
标签: python configuration flask config