我刚安装了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知识中是否存在一些基本的空白。谢谢您。

最佳答案

您需要查看django.core.management package;该execute_from_command_line() function接受sys.argv命令行参数并从中获取它。
在命令行上输入manage.py startapp xyz时,sys.argv设置为['manage.py', 'startapp', 'xyz']
它们被移交给一个ManagementUtility instance进行实际的解析。
整个.execute()包是模块化的;django.core.management method包含用于.commands工具的各种标准命令。例如,manage.py sub package处理django.core.management.commands.startapp子命令。

关于python - manage.py如何运作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16106445/

10-12 05:30