我目前正在一个有两个用例的项目中:第一个,我的客户端应用程序通过一些各种api调用远程访问我的数据库服务(这种情况很好);第二,允许本地运行的客户端程序使用相同的api调用访问我在本地计算机上的数据库副本,而不必启动服务器进程。
我发现以下代码可在manage.py shell
中使用:
from django.test import Client
client = Client()
resp = client.get("/api/call/path").json()
但是,我无法在manage.py
参数之外使用它。我首先运行以下代码:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "DataSite.settings")
django.setup()
但是,当我运行代码片段以使客户端运行时,出现以下错误:
[exception.py:135:handle_uncaught_exception() ] Internal Server Error: /api/call/path
Traceback (most recent call last):
<Traceback here>
OperationalError: could not connect to server: Connection refused
Is the server running on host "127.0.0.1" and accepting
TCP/IP connections on port 5432?
我尝试遵循manage.py
实用程序启动其外壳程序的步骤,但是无法完全复制此服务器在后台运行的内容。
有什么我想念的吗?另外,还有更好的方法吗?
更新
我创建了一个自定义命令调用来执行所需的操作。现在,当我运行manage.py mycustomcommand
时,我得到了预期的输出。但是,当我尝试通过call_command
让其他python文件执行相同的操作时,出现以下错误:
django.db.utils.OperationalError: could not connect to server: Connection refused
Is the server running on host "127.0.0.1" and accepting
TCP/IP connections on port 5432?
我尝试通过call_command
的{{1}}调用来进行此操作,并通过设置django settings环境变量然后打入django.core.management
本身进行的操作到manage.py
。
有更好的方法吗?
谢谢!