Python 如何使用Django shell与正在运行的服务器交互?

Python 如何使用Django shell与正在运行的服务器交互?,python,django,django-models,Python,Django,Django Models,在我的一个应用程序的apps.py中,我为无法在初始化时设置的模型设置了一些类变量,因为它们依赖于其他应用程序和其中的模型。这很好,并且设置了类变量,但我想做的是测试这些类,看看它们是否能按预期工作。我的问题是,在运行开发服务器时设置了类变量,但我还希望能够创建这些模型的新实例进行测试。我意识到这可以通过构建前端来实现,前端将与生产中的模型交互,但是对于简单的测试来说这似乎太过分了 有没有办法在当前运行的服务器上使用Django的shell,或者我必须导入并运行manage.py通常自己处理的所

在我的一个应用程序的
apps.py
中,我为无法在初始化时设置的模型设置了一些类变量,因为它们依赖于其他应用程序和其中的模型。这很好,并且设置了类变量,但我想做的是测试这些类,看看它们是否能按预期工作。我的问题是,在运行开发服务器时设置了类变量,但我还希望能够创建这些模型的新实例进行测试。我意识到这可以通过构建前端来实现,前端将与生产中的模型交互,但是对于简单的测试来说这似乎太过分了

有没有办法在当前运行的服务器上使用Django的shell,或者我必须导入并运行
manage.py
通常自己处理的所有事情

如果我写的不清楚,下面是一个有问题的文件示例:

#example.models.py
从django.db.models导入*
类示例示例模型(模型):
类变量=无
.
.
.
#apps.py
从django.apps导入AppConfig
类ExampleConfig(AppConfig):
名称='示例'
def就绪(自我):
从example.models导入ExampleModel
ExampleModel.class_var='something'

取决于您的服务器,但您可以在生产环境中运行Django shell

当您运行
python manage.py shell时
很多设置都与运行
runserver
时相同。特别是,将调用
AppConfig
s中的所有
ready
方法

因此,不需要运行服务器来执行所需的测试

你甚至可以测试这个。只需添加一个
print(“这会发生”)
并运行
python manage.py shell
。您应该看到如下内容:

(env)your-current-location % python manage.py shell
This happens       <---- Here you see it is printed 
Python 3.8.6 (default, Oct  8 2020, 14:06:32)
[Clang 12.0.0 (clang-1200.0.32.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>>
(env)当前位置%python manage.py shell
这种情况会发生>>

无论如何,你可以打开一个shell,同时运行你的服务器。但这些将是不同的过程,在类上设置的变量将引用不同的东西。它们将(在代码级别)完全分离。

是的,我不想处理该网站的两个实例。事实证明,真正的bug最终是其他东西,但是如果没有这个,就不会注意到它,所以谢谢!