迭代Django中的一部分应用程序

时间:2017-11-24 14:33:47

标签: python django python-3.x django-apps

作为Django项目的一部分,我的用户将能够从各种选项中进行选择。每个选项的功能都存储在一个单独的应用程序中。我的项目结构看起来像这样:

MyProject/
    MyProject
    App1
    App2
    Options/
        Option1/
        Option2/
        Option3/
        …
    …
    manage.py

Option1,Option2等本身就是一个应用程序,并列在INSTALLED_APPS我的问题是:是否有一种方法可以迭代选项目录中包含的每个应用程序。例如,假设每个app都包含一个名为utils.py的文件,每个utils.py中都有一个名为foo的函数。

有没有办法做这样的事情:

from .. import Options
survey = [ app.utils.foo() for app in Options]

如果失败了,有没有办法迭代所有应用程序?我可以用django.apps做些什么吗?

2 个答案:

答案 0 :(得分:1)

取决于您如何配置apps.py

from django.apps import apps

for name, app in apps.app_configs.items():
    if name in ['OPTIONS-N']:
        utils = app.module.utils

答案 1 :(得分:0)

settings.py是一个标准的python文件,所以为什么不将INSTALLED_APPS列表导入到你的视图中,或者你需要它的地方:

from settings import INSTALLED_APPS

然后只是

for app in INSTALLED_APPS:
   ...