理解django-admin runserver和manage.py runserver之间的区别

3

django.admin和manage.py之间的基本区别是什么?

另外,“manage.py作为django.py的薄包装器”的意思是什么?


如果一个有效而另一个无效,你为什么要使用那个无效的呢? - Daniel Roseman
1
我想知道原因。 - Akanksha Singh
嘿,Akansha - 根据文档,manage.py 是对 django-admin.py 的一个薄包装。我之前没用过包装器,但根据我的理解,程序员经常为“遗留软件”编写包装器[还有其他一些我不熟悉的用例]。这些包装器使程序员能够使用原本无法使用的“遗留库”。我想你应该问的问题是 manage.py 和 django-admin.py 之间的区别。为什么要使用其中之一,我觉得文档中并没有解释。希望这能给你一些启示。 - macmania314
有没有 Django 社区的人能解释一下为什么我们需要 manage.py?为什么不能让 django-admin.py 为我们设置配置?为什么我们需要 manage.py/为什么 Django 会生成 manage.py? - macmania314
你不明白什么?你查看了https://en.wikipedia.org/wiki/Wrapper_library吗?你可能还想查看这个设计模式:https://en.wikipedia.org/wiki/Adapter_pattern,这是包装器的基础。 - macmania314
显示剩余5条评论
1个回答

2
以下是关于django-admin和manage.py之间区别的文档:
django-admin.py是Django用于管理任务的命令行实用程序。本文档概述了它所能做的所有事情。
此外,每个Django项目都会自动创建manage.py。manage.py是django-admin.py的一个薄包装器,它在委派给django-admin.py之前为您处理两件事情:
- 它将您的项目包放在sys.path上。 - 它设置DJANGO_SETTINGS_MODULE环境变量,以便它指向您的项目的settings.py文件。
以下是更多的文档,解释了它们之间的区别: https://django.readthedocs.org/en/1.4/ref/django-admin.html https://docs.djangoproject.com/en/1.8/ref/django-admin/
如我在上面的评论中所说 - manage.py是必需的,因为每个应用程序名称都不同,您必须指定您的应用程序设置才能成功运行Django应用程序。除了这一行之外,django-admin和manage.py之间真的没有任何区别。
if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "[App name].settings")

在输入 manage.py 后,django-admin.py 会像下面展示的那样处理所有内容:

from django.core.management import execute_from_command_line

execute_from_command_line(sys.argv)

有时候,如果文档无法帮助我们理解情况,查看源代码可能会有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接