Python Django:runserver上的可插入应用程序
我在Django中的文件夹结构如下: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
./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)