Python manage.py是如何工作的?
我刚刚安装了django,我正在他们的网站上做教程 我在命令行上遵循他们的指示,他们正在工作,但我想知道为什么 例如,您可以访问命令“manage.py startapp xyz”,它将创建一个包,但当我查看manage.py时,它只包含以下代码(由django添加,我没有接触manage.py) 我在manage.py或其他任何地方都看不到startapp的任何方法。我不确定这是否是django特有的,或者在我的python知识中是否存在一些基本的差距。谢谢。您需要查看;接受Python manage.py是如何工作的?,python,django,Python,Django,我刚刚安装了django,我正在他们的网站上做教程 我在命令行上遵循他们的指示,他们正在工作,但我想知道为什么 例如,您可以访问命令“manage.py startapp xyz”,它将创建一个包,但当我查看manage.py时,它只包含以下代码(由django添加,我没有接触manage.py) 我在manage.py或其他任何地方都看不到startapp的任何方法。我不确定这是否是django特有的,或者在我的python知识中是否存在一些基本的差距。谢谢。您需要查看;接受sys.argv命
sys.argv
命令行参数并从中获取它
在命令行中输入manage.py startapp xyz
时,sys.argv
被设置为['manage.py','startapp',xyz']
这些都交给了a,后者有a来进行实际的解析
整个
django.core.management
包是模块化的;包含用于manage.py
工具的各种标准命令。例如,处理startapp
子命令。您是否查看了execute\u from\u命令行()
code?对不起,我说错了。我不是通过命令行运行这些命令,而是通过eclipse的pydev的django插件运行这些命令。我输入命令并获取输出:完成了“C:\Users\zyz\workspace\DjangoProject12\src\manage.py startapp zxz”的执行。实际上,它仍然从类似命令行的环境中调用manage.py(抱歉,不知道详细信息),因此manage.py的执行与通过命令启动完全相同line@monkut是的,是的。我不理解的是sys.argv只是以字符串形式通过命令行中的内容,我在任何地方都没有看到“startapp”,这让我感到困惑,因为我认为这是一种可以ctrl+F的方法。正如Pieters所建议的,我只需要深入研究django.core.management包。
#!/usr/bin/env python
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "DjangoProject12.settings")
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)