我刚刚安装了 django,我正在他们的网站上做教程。
我正在按照他们在命令行上的说明进行操作,他们正在工作,但我想知道为什么?
例如,您可以访问命令“manage.py startapp xyz”,它会创建一个包,但是当我查看 manage.py 时,它只包含以下代码(由 django 添加,我没有触及管理.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()
method进行实际的解析。
整个django.core.management
包是模块化的; .commands
sub package包含 manage.py
工具的各种标准命令。 django.core.management.commands.startapp
例如,处理 startapp
子命令。
关于python - manage.py 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16106445/