我意识到蓝图是模块化的,并且很好地完成了这个任务。但是,我有多个蓝图以及根应用程序(即app/
)所需要的几个任务。有了这个想法,当我对app/tasks.py
中的任务进行更改时,我希望它传播到使用这些任务的蓝图,而不必手动更改每个蓝图任务文件(app/blueprint/tasks.py
)中的代码。
考虑到这一点,我试图将app/tasks.py
导入到app/tasks.py
in app/blueprint/tasks.py
中的每个蓝图中,每个蓝图中都有某个任务的副本。当然,这里的主要问题是循环进口,我似乎无法绕过它们,事实上,这似乎几乎是不可能的。我的应用程序工厂在返回应用程序之前不会导入app/tasks.py
。在工厂本身注册图纸之前,是否有可能进行此进口?如果没有,是否有办法避免循环进口问题?目前,我没有办法绕过它,在没有创建循环导入的情况下,无法将from app import tasks
放置在蓝图文件中。
编辑:我意识到问题是我在我的应用程序工厂注册了我的蓝图。因此,当我尝试在from app.tasks import <func>
中使用app/blueprint/tasks.py
时,会产生一个导入错误,因为app
还没有在蓝图注册时被声明。我可以通过将蓝图注册移到应用程序工厂之外来解决这个问题,但是有更好的方法吗?
发布于 2022-10-18 23:41:24
从我看来应该能行吗?会不会是因为命名而令人困惑?就像认为应用程序引用的是app对象而不是文件夹一样?
我只是在我自己的应用程序中进行了测试,我可以将同样的东西导入app.py和我的蓝图文件中。
尝试更改文件夹名,这样它们就不会被命名为app。
https://stackoverflow.com/questions/74117780
复制