我喜欢Django,但是对于特定的应用程序我只想使用它的一部分,但是我对Django在内部的工作方式不太熟悉,所以也许有人可以指出我正确的方向,我有什么查看.
具体来说,我想使用:
我不会用:
或者,更确切地说,我既不使用HTTP也不使用HTML.所以基本上,我有一个不同于通常的输入/输出链.
这可以吗?
我在Django中的个人杀手功能是我可以对模型进行的对象/数据库映射,所以如果有另一种技术(不必是Python,我正处于设计阶段,我对语言非常不可知)平台)给了我相同的能力,这也很棒.
是否可以在运行时动态加载django应用程序?通常,应用程序在初始化时使用settings.py中的INSTALLED_APPS元组加载.但是,是否可以在运行时加载其他应用程序?我在不同情况下遇到这个问题.例如,在测试期间,当我想动态加载或卸载应用程序时,会出现一种情况.
为了使问题更具体,想象一下我有一个目录apps,我把我的应用程序放在哪里,我想自动安装任何进入那里的新应用程序,而无需手动编辑settings.py.
这很容易.按照示例代码进行操作
Django:动态添加应用程序作为插件,自动构建网址和其他设置
我们将以下代码放入settings.py可以循环遍历app目录中所有子目录的名称,并像这样增加INSTALLED_APPS元组settings.py:
APPS_DIR = '/path_to/apps/'
for item in os.listdir(APPS_DIR):
if os.path.isdir(os.path.join(APPS_DIR, item)):
app_name = 'apps.%s' % item
if app_name not in INSTALLED_APPS:
INSTALLED_APPS += (app_name, )
Run Code Online (Sandbox Code Playgroud)
在那之后,如果我在django shell中,我可能会喜欢
from django.conf import settings
Run Code Online (Sandbox Code Playgroud)
并且应用程序将列在settings.INSTALLED_APPS.如果我做了
from django.core import management
management.call_command('syncdb', interactive=False)
Run Code Online (Sandbox Code Playgroud)
这将为应用程序创建必要的数据库表.
但是,如果我现在要在apps/目录中添加更多应用程序而不重新启动,则这些应用程序不会在settings.INSTALLED_APPS中列出,因此后续调用syncdb将无效.
我想知道的是,如果有什么我可以做 - 没有重新启动---重新加载设置和加载/安装新的应用程序.
我试图直接导入我的settings.py,即从myproject导入设置
然后reload是settings使用任何内置后的蟒蛇app目录更改.虽然现在更改了settings.INSTALLED_APPS以包含新添加的应用,但这最终没有任何区别.例如,
from django.db import models
models.get_apps()
Run Code Online (Sandbox Code Playgroud)
仅显示原始应用程序,apps而不是新添加的应用程序
management.call_command('syncdb', …Run Code Online (Sandbox Code Playgroud) 使用Django框架开发命令行界面工具有什么意义吗?在我的情况下,将没有任何图形界面.我可以使用它获得什么好处?或者您可能知道CLI的任何其他有用的框架?我想强调用REST API发出HTTP请求.
更新:谢谢你们!我想使用REST API而不是在我的工具中创建它.