我读了 djangodoc https://docs.djangoproject.com/en/dev/ref/django-admin/和一些SO帖子来了解manage.py和django-admin.py之间的区别。
他们都说:
Manage.py 会在每个 Django 项目中自动创建。管理.py
是 django-admin.py 的一个薄包装,负责两件事
在委托给 django-admin.py 之前为您提供:
- 它将项目的包放在 sys.path 上。
- 它设置 DJANGO_SETTINGS_MODULE 环境变量,使其指向
您项目的 settings.py 文件。
所以我检查了这两个文件的源代码(最新版本,所以它是文档)。
然后我就很困惑了。manage.py
执行第二件事:设置 DJANGO_SETTINGS_MODULE 环境变量。除此之外,我真的找不到这两个脚本之间的任何区别。
[django-admin.py]
#!/usr/bin/env python
from django.core import management
if __name__ == "__main__":
management.execute_from_command_line()
[管理.py]
#!/usr/bin/env python
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "{{ project_name }}.settings")
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
为什么? django 文档已经过时了吗?或者我在这里错过了什么?将项目包放在 sys.path 上的代码在哪里?
The sys.path
已更新here https://github.com/django/django/blob/1.5.4/django/core/management/base.py#L45 using handle_default_options(options)
声明位于here https://github.com/django/django/blob/1.5.4/django/core/management/__init__.py#L364。执行路径如下:
-
execute_from_command_line(argv)
(your manage.py
)
-
utility.execute()
here https://github.com/django/django/blob/1.5.4/django/core/management/__init__.py#L364
-
handle_default_options(options)
here https://github.com/django/django/blob/1.5.4/django/core/management/__init__.py#L364
使用相同的方法Command
用作管理命令的基类的类。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)