python - manage.py 是如何工作的?

标签 python django

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

相关文章:

python - 检索 GridFS 中要从 Flask 发送的文件?

python - 如何为弹跳球创建碰撞检测?

python - 将数量写入特定日记帐 - Odoo v8

python - 两个互斥的多对多关系

django - 当所有公共(public)访问都被阻止时,为什么我无法从我的 S3 存储桶中获取图像? 403 Forbidden 但静态文件加载正常

python子进程 "mount"不提示输入密码

python - matplotlib 颜色图 : do not resize

python - 如何使用 update 合并两个查询的结果

Django 无法连接到 Redis Docker 容器

python - 如何重新创建 Django 项目的数据库?