Django:runserver上的可插拔应用程序

时间:2013-11-07 02:20:27

标签: python django web

我在Django中有以下文件夹结构:

./project_root
    ./app
       ./fixtures/
       ./static/
       ./templates/
       ./blog/
       ./settings.py
       ./urls.py
       ./views.py
       ./manage.py
       ./__init__.py 
    ./plugin
       ./code_editor
           ./static
           ./templates
           ./urls.py
           ./views.py
           ./__init__.py 
       ./code_viewer
           ./static
           ./templates
           ./urls.py
           ./views.py
           ./__init__.py 

所以我如何更改settings.py以便动态加载插件(这意味着我不知道将在不同的服务器中安装多少个插件。它应该在运行时动态检查并添加它。)on:< / p>

python manage.py runserver

我要改变ROOT_URLSCONF吗?还是INSTALLED_APPS?谢谢你的回答。

1 个答案:

答案 0 :(得分:1)

让您的settings.py执行代码,通过扫描'plugin'文件夹来确定存在哪些插件,并构建相应的INSTALLED_APPS变量。

# In settings.py    
for path in os.listdir(my_plugins_folder_location):
    if os.path.isdir(path):
        app_name = 'project_root.plugin.%s' % path
        if app_name not in INSTALLED_APPS:
            INSTALLED_APPS.append(app_name)