为什么Django name 2文件夹是项目名称?

Use*_*ser 5 python linux django mod-wsgi wsgi

因此,在我的Django结构(默认设置)中,我的文件夹结构如下所示:

/mysite
    /mysite
        __init.py
        settings.py
        urls.py
        wsgi.py
    /mymodel
        ...    
    /myapp
        ...
    manage.py
Run Code Online (Sandbox Code Playgroud)

因此,要访问设置文件,默认情况下,wsgi.py被设置为mysite / settings.py。但是,Django将mysite名称分配给2个文件夹,一个在另一个文件夹内。因此,它看起来在最高一级,没有找到它,并引发了错误。我在系统路径中使用父mysite的目录尝试了mysite / mysite / settings.py,但这给出了相同的错误。

ImportError: Could not import settings 'mysite.mysite.settings' (Is it on sys.path? Is there an import error in the settings file?): No module named mysite.mysite.settings
Run Code Online (Sandbox Code Playgroud)

要获取有关此错误的更多信息,请检查如何停止获取ImportError:将django与wsgi一起使用时,无法导入设置'mofin.settings'吗?

我只是想知道为什么Django会让默认结构变得如此困难,并且重命名是最好的出路吗?看来这可能是草率的,并且容易出错。不知道如果我确实开始重命名,我必须在几个地方更改名称。似乎很危险。

Kev*_*nry 5

关键的一点明白的是,顶层mysite不是一个Python包(注意,有没有__init__.py)。它只是用于组织目的的常规文件夹。(这就是为什么mysite.mysite.settings无论如何都将永远无法工作的原因PYTHONPATH。)

您需要做的就是确保顶级mysite目录是该项目上唯一的内容PYTHONPATH。一旦这样做,一切都将按照您期望的方式工作。(但是,如果您发现双重命名令人困惑,那么您一定可以小心地将其重命名。)

  • 因此,基本上没有任何背后的原因,这只是一个糟糕的设计决策? (3认同)