我刚安装了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/