Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python manage.py是如何工作的?_Python_Django - Fatal编程技术网

Python manage.py是如何工作的?

Python manage.py是如何工作的?,python,django,Python,Django,我刚刚安装了django,我正在他们的网站上做教程 我在命令行上遵循他们的指示,他们正在工作,但我想知道为什么 例如,您可以访问命令“manage.py startapp xyz”,它将创建一个包,但当我查看manage.py时,它只包含以下代码(由django添加,我没有接触manage.py) 我在manage.py或其他任何地方都看不到startapp的任何方法。我不确定这是否是django特有的,或者在我的python知识中是否存在一些基本的差距。谢谢。您需要查看;接受sys.argv命

我刚刚安装了django,我正在他们的网站上做教程

我在命令行上遵循他们的指示,他们正在工作,但我想知道为什么

例如,您可以访问命令“manage.py startapp xyz”,它将创建一个包,但当我查看manage.py时,它只包含以下代码(由django添加,我没有接触manage.py)

我在manage.py或其他任何地方都看不到startapp的任何方法。我不确定这是否是django特有的,或者在我的python知识中是否存在一些基本的差距。谢谢。

您需要查看;接受
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)