Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:runserver上的可插入应用程序_Python_Django_Web - Fatal编程技术网

Python Django:runserver上的可插入应用程序

Python Django:runserver上的可插入应用程序,python,django,web,Python,Django,Web,我在Django中的文件夹结构如下: ./project_root ./app ./fixtures/ ./static/ ./templates/ ./blog/ ./settings.py ./urls.py ./views.py ./manage.py ./__init__.py ./plugin ./code_editor

我在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:


我应该更改根目录吗?还是已安装的应用程序?谢谢您的回答。

进行
设置。py
执行代码,通过扫描“plugin”文件夹确定存在哪些插件,并建立相应的INSTALLED\u 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)

您需要将应用程序/插件添加到
已安装的\u apps
,并且需要将应用程序URL包含在项目目录的
url.py
中。@是否可以动态创建它?我现在可以手动操作了。添加到ROOT_URLCONF并给它几个值怎么样?这是问题还是建议?好的。我得到了它。静态文件和目录呢?什么样的模板?URL?另一件奇怪的事。当我在settings.py文件中输入print'Hello'时,它会打印两次。为什么会发生这种情况?@antindexer您可以通过这种方式设置任何设置,例如模板目录等。双重导入可以用以下答案来解释。它不应该出现在Django>=1.4中。@antindexer我可能会让根URL.py根据安装的应用程序查找其他URL.py来自动建立URL列表。
# 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)