我刚刚安装了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知识中存在一些根本性的差距。谢谢。
答案 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
子命令。