在我的一个应用程序的apps.py
中,我为一些无法在初始化时设置的模型设置了一些类变量,因为它们依赖于其他应用程序和其中的模型。这可以很好地工作,并且设置了类变量,但我想要做的是测试这些类,看看它们是否会按预期工作。我的问题是,类变量是在我运行开发服务器时设置的,但我还希望能够创建这些模型的新实例以进行测试。我意识到,这可以通过构建与生产中的模型交互的前端来实现,但对于简单的测试来说,这似乎有点过了。
有没有办法在当前运行的服务器上使用Django的shell,或者我必须导入并运行manage.py
通常自己处理的所有内容?
如果我写的不清楚,这里有一个有问题的文件的例子:
# example.models.py
from django.db.models import *
class ExampleModel(Model):
class_var = None
.
.
.
# apps.py
from django.apps import AppConfig
class ExampleConfig(AppConfig):
name = 'example'
def ready(self):
from example.models import ExampleModel
ExampleModel.class_var = 'something'
发布于 2021-01-06 01:29:56
当您运行python manage.py shell
时,许多设置与您运行runserver
时的设置相同。特别是,您的AppConfig
中的所有ready
方法都将被调用。
因此,您的服务器不需要运行来执行您想要的测试。
你甚至可以测试这个。只需添加一个print("This happens")
并运行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)
>>>
不管怎样,你可以打开一个shell,同时运行你的服务器是的。但这些将是不同的过程,在类上设置的变量将引用不同的东西。它们(在代码级别)将是完全分离的。
发布于 2021-01-06 01:24:51
取决于您的服务器,但是您可以在生产环境中运行Django shell
https://stackoverflow.com/questions/65582822
复制相似问题