首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用Django shell与正在运行的服务器进行交互?

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

Stack Overflow用户
提问于 2021-01-06 00:29:51
回答 2查看 144关注 0票数 0

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

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

如果我写的不清楚,这里有一个有问题的文件的例子:

代码语言:javascript
复制
# example.models.py

from django.db.models import *

class ExampleModel(Model):
    class_var = None
    
    .
    .
    .
代码语言:javascript
复制
# apps.py

from django.apps import AppConfig


class ExampleConfig(AppConfig):
    name = 'example'

    def ready(self):
        from example.models import ExampleModel
        ExampleModel.class_var = 'something'
EN

回答 2

Stack Overflow用户

发布于 2021-01-06 01:29:56

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

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

你甚至可以测试这个。只需添加一个print("This happens")并运行python manage.py shell即可。您应该会看到类似下面这样的内容:

代码语言:javascript
复制
(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,同时运行你的服务器是的。但这些将是不同的过程,在类上设置的变量将引用不同的东西。它们(在代码级别)将是完全分离的。

票数 1
EN

Stack Overflow用户

发布于 2021-01-06 01:24:51

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65582822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档