manage.py如何运作?

时间:2013-04-19 14:00:49

标签: python django

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

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

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

#!/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)

我没有在manage.py或其他任何地方看到任何startapp方法。我不确定这是django具体还是我的python知识中存在一些根本性的差距。谢谢。

1 个答案:

答案 0 :(得分:12)

你需要查看django.core.management package; execute_from_command_line() function接受sys.argv命令行参数并从那里获取。

当您在命令行中输入manage.py startapp xyz时,sys.argv设置为['manage.py', 'startapp', 'xyz']

这些传递给ManagementUtility instance.execute() method.commands sub package来进行实际解析。

整个django.core.management包是模块化的; django.core.management.commands.startapp包含manage.py工具的各种标准命令。例如,{{3}}处理startapp子命令。