为什么django-admin startproject会创建嵌套的项目文件夹?

rbl8hiat  于 2022-11-26  发布在  Go
关注(0)|答案(2)|浏览(177)

django-admin startproject mysite会创建如下内容:

/mysite
    /mysite
        settings.py
        ....

我知道如果我在命令(django-admin startproject mysite .)的末尾加上一个句点,第二个文件夹就不会被创建,但是我不明白创建嵌套项目文件夹背后的原理是什么。

shstlldc

shstlldc1#

一个项目是一个或多个应用程序的集合。当你默认创建一个项目时,一个同名的默认应用程序会在一个同名的文件夹中创建。因此,你最终会得到一个嵌套的文件夹结构,如/myproject/myproject
我想它为什么不把所有默认的/root应用文件都转储到项目文件夹的根目录下,是因为这会让管理多个应用变得有点复杂。默认应用的结构和其他应用一样。Django依赖于某些约定,包括特殊的文件名和特定的文件夹结构,来区分什么是什么。
在这样的结构中:

myproject
  /myproject
  /myapp
  /anotherapp

你可以从myproject中引用myapp,Django可以很容易地找到myproject,因为这些文件夹约定(反之亦然)。
您可以通过查看www.example.com来判断哪个应用程序是默认应用程序manage.py,该网站在def main()os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')中会有一行类似于以下内容的内容

o8x7eapl

o8x7eapl2#

命令django-admin startproject mysite创建一个项目,Django将一个项目定义为一个或多个app的容器,该命令创建一个项目和一个app。
如果我的回答是正确的,您正尝试在另一个应用程序中创建一个应用程序。用户可能会由于各种原因(如应用程序之间的紧密关联或依赖关系)而决定嵌套一个应用程序
例如,一个网站可能有一个公共网站和一个管理员网站。公共网站(应用程序)可能有一个公共帐户用户(另一个应用程序)作为一个用户模型。管理员网站可能有一个私人帐户用户。因此,人们可能会寻求包含公共用户模型内的公共网站和私人用户帐户相同。

修复

命令django-admin startproject mysite .是一个错误的命令。你不是嵌套项目,而是嵌套应用程序。要创建一个应用程序,请使用python manage.py startapp mysite,然后使用cd进入应用程序,然后使用python manage.py startapp nestedsite来嵌套它。
请参见[https://stackoverflow.com/q/2862084/6753642][1]

相关问题