Django:如何指定设置文件的路径

标签 django settings

我知道这个问题已经被问过多次,但我似乎仍然找不到适合我的解决方案。我的 Django 项目文件夹如下所示:

my_project
    __init__.py
    manage.py
    my_first_app
    my_second_app
    core

现在“core”文件夹如下所示:

__init__.py
some_other_stuff.py
settings
     __init__.py
     prod.py
     dev.py
     local.py -> dev.py

local.py 是一个符号链接(symbolic link),指向正确的设置文件,在我的机器上为 dev.py,在生产中为 prod.py .

这是我的问题:当我尝试使用manage.py时,我收到一个奇怪的错误ImproperlyConfigured:The SECRET_KEY设置不能为空。当我将路径传递给设置文件local.py时作为参数(--settings=core.settings.local)它运行良好。我认为问题是 Django 不知道在哪里查找设置文件。我怎样才能告诉他(她?)去哪里看?

我已经尝试将路径导出到环境 (export DJANGO_SETTINGS_MODULE=core.settings.local) 并将 PYTHONPATH 设置为父目录,但无济于事。

最佳答案

__init__.py的主要用途是初始化Python包。演示这一点的最简单方法是查看标准 Python 模块的结构。

package/
    __init__.py
    file1.py
    file2.py

正如您在上面的结构中看到的,包含 __init__.py目录中的文件向 Python 解释器指示该目录应被视为 Python 包 __init__.py可以是一个空文件,但它通常用于执行包所需的设置(导入内容、将内容加载到路径中等)。

__init__.py 中要做的一件常见的事情是将选定的类、函数等导入到包级别,以便可以方便地从包中导入它们。

在上面的示例中,我们可以说 file.py 具有类文件。所以我们的 __init__.py 中没有任何内容您可以使用以下语法导入: from package.file import File

但是您可以将文件导入到您的 __init__.py 中使其在包级别可用:

# in your __init__.py
from file1 import File
# now import File from package
from package import File

Source

因此,作为结论,当您在 __init__.py 中调用 import 时在包 mypackage 中,就像将包用作简单的 python 文件一样,这就是我的解决方案所做的:

from .local import *__init__.py

我之前没有在设置案例中使用过它,但当我想在 Django 应用程序中分割我的模型时,我会使用它,models.py --> 模型包,./manage syndb没有发现我声明的模型,我发现这个解决方案是相似的。您可以查看更多详情here

最后一件事,我确信还有其他解决方案可以解决您的问题,但这可能是最简单的。

祝你好运

关于Django:如何指定设置文件的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17364863/

相关文章:

iOS 设置包 : How to validate input

python - 在 Python 中创建游戏配置/选项 (config.cfg) 文件

Android studio 自动删除包中的文件/文件夹(在 android 包中),如何防止?

django - Django ORM 中 ImageField 的默认图像

python - Django Compressor 内联删除自定义属性

django - 在 Geodjango 模型的传单 map 中显示多边形

python - SECRET_KEY 设置不能为空

ios - Settings.bundle 仅适用于 iPad?

没有 UI 的 Android 设置应用程序

python - 如何使用 slug 形成 url