Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么django项目是python包?_Python_Django - Fatal编程技术网

为什么django项目是python包?

为什么django项目是python包?,python,django,Python,Django,为什么它们不是简单的目录?任何好的建议都是在应用程序中保留尽可能多的内容,而不是将它们与项目结合起来。将应用程序作为project.application导入的功能本身就不鼓励这样做。为什么django-admin.py会创建\uuuu init\uuuuu.py?没有它,这个项目是非常有用的。理由是什么?我们有一个单独的项目,我们为其他项目“分类”。所以我们有其他项目从主项目导入内容。我想对我们来说,它提供了包含所有其他应用程序的公共名称空间 我想,我们可以把所有的应用程序与项目分开,放到一个

为什么它们不是简单的目录?任何好的建议都是在应用程序中保留尽可能多的内容,而不是将它们与项目结合起来。将应用程序作为project.application导入的功能本身就不鼓励这样做。为什么django-admin.py会创建
\uuuu init\uuuuu.py
?没有它,这个项目是非常有用的。理由是什么?

我们有一个单独的项目,我们为其他项目“分类”。所以我们有其他项目从主项目导入内容。我想对我们来说,它提供了包含所有其他应用程序的公共名称空间

我想,我们可以把所有的应用程序与项目分开,放到一个软件包中。我们的制度是发展起来的,而不是计划好的


所以我想我的答案是,它提供了一个很好的根命名空间。(针对我们的需要):

据我所知,应用程序不需要位于项目名称空间内。只是他们在$PYTHONPATH上。因此,系统上共享同一PYTHONPATH的任何其他代码都可以使用它们

我认为这个想法是,您可以重用应用程序,但不需要将它们从最初创建它们的项目中移出。如果项目不是一个包,则需要将要重用的应用程序复制/移动到python包中。因为项目本身就是一个合适的python包,所以您可以重用其中的应用程序,而无需将应用程序移到其他位置。

项目的核心是settings.py和root url.py。这两个都是Python模块,因此它们需要以某种方式进行导入。您可以将项目目录直接放在Python路径上,从而使它们可以作为顶级模块导入,但这可能是更糟糕的做法。最好让项目是一个包,设置和URL是其中的模块。

应用程序不应该位于项目名称空间之外,以便可重用吗?是的。因此,关于代码自然增长的评论。不幸的是,正如经常发生的情况一样,特朗普在分配资源时修复了这样的功能:\包是一个目录。添加了一个
\uuuu init\uuuuu.py
文件。问题是什么?既然目录是一个包(加上一个文件),你的问题是什么?或者这是一个抱怨,目录和包之间的区别是一个空的fie?我的问题不是它是一个目录,而是它有一个init.py,因此是一个包。我知道,我更喜欢它们在项目之外。问题是,通过使项目成为一个包并允许应用程序嵌套在其中,真正糟糕的布局和路径问题很容易发生。我要寻找的是,在Django的创建过程中是否有一个特定的需求,将init.py放在其中。要问django用户吗