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理解的语法?因为那是有道理的。
感谢瑞典!
答案 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和其余的包。