python交互式shell如何连接到Django?

时间:2018-01-28 19:49:00

标签: python django shell

Hello其他程序员!

我正在阅读通过运行...python manage.py shell达到的交互式shell的功能。这是我以前做过很多次的事情,但是我不太确定实际的shell如何与Django连接。在提出这个问题之前,我确实试图通过官方文档找到我的方式 - 以及本网站上的其他帖子。这个问题似乎没有像我这样的初学者能够理解的答案。

我已经读过manage.py shell - 命令'为我们提供了一个交互式shell,为Django正确设置了Python路径。'我知道它可以用于与Django项目交互,以及查询已配置的数据库和模型 - 但是幕后会发生什么?

例如,在编写ModelName.objects.all()时,.objects.all()的来源是什么,因为它似乎不是纯粹的python语法? Django如何理解这一点?

shell是Django提供的特殊python版本,还有一些Django理解的语法?因为那是有道理的。

感谢瑞典!

1 个答案:

答案 0 :(得分:0)

据我所知,objects来自拥有经理的模型。 From the docs

  

Manager是为Django模型提供数据库查询操作的接口。对于Django应用程序中的每个模型,至少存在一个Manager。

管理员存在于django中。所以当你运行shell时,你只是在安装了django的环境中执行python代码。您可能已经注意到必须运行from .models import myModel,这意味着拥有模型(即django代码)不会继承到shell,您需要手动导入它。

shell只是执行代码的交互方式。从manage.py运行它的唯一特殊之处在于它将在其PYTHONPATH中使用django和其余的包。