python - django local_settings导入错误

标签 python django django-settings

我想导入 local_settings.py 文件(不在我的 VCS 系统中)以覆盖 settings.py 中的数据库设置

为此,我在 settings.py 文件的最后添加了这些行。

try:
    from local_settings import *
except ImportError:
    print('Unable to load local_settings.py:')

当我使用python manage.py diffsettings时,我发现settings.py中的数据库设置没有更改,并且收到消息无法加载local_settings.py:

我想知道为什么导入失败。

这是我的项目文件夹架构:

my_project_folder/
   my_project_folder/
       settings.py
       urls.py
       local_settings.py
       etc...
   app1/
   app2/
   static/
   manage.py
   docker-compose.yml
   etc...

这是我的 local_settings.py 的内容:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'postgres',
        'USER': 'postgres',
        'HOST': 'db_my_project',
        'PORT': 5432,
    }
}

这是settings.py中DATABASES设置的内容:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'mydb',
        'USER': 'my_project',
        'PASSWORD': 'my_password',
        'HOST': '127.0.0.1',
        'PORT': '5432',
    }
}

预先感谢您的帮助!

最佳答案

它不起作用,因为您忘记了 local_settings.py 前面的 . (相对导入)。尝试 from .local_settings.py import *,同时检查当前文件夹中是否有 __init__.py

关于设置,我建议您将设置存储在 settings 文件夹中。并为每个环境创建一个设置文件。创建一个包含基本设置的 base.py 文件,然后将其导入到所有其他设置文件中。

结构如下:

├── project_name
│   ├── project_name
│   │   ├── settings
│   │   │   ├── __init__.py
│   │   │   ├── base.py
│   │   │   ├── dev.py
│   │   │   ├── staging.py
│   │   │   └── prod.py
│   │   ├── __init__.py
│   │   ├── urls.py
│   │   └── wsgi.py
...

还有一个设置文件(例如:dev.pylocal.py):

try:
    from .base import *
except ImportError:
    print('Unable to import base settings file:')

# ...

尽可能使用相对导入。

关于数据库,您不应在 base.py 中配置它们。在每个特定的设置文件中声明它们。

关于python - django local_settings导入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34044293/

相关文章:

Django 迁移说数据库后端不可用

python - 如何继承Django变量?

django - 将 SECRET KEY 放在环境变量中是否比将其放在未跟踪的设置文件中更好?

python - Django 设置 : raise KeyError, 引发 ImproperlyConfigured 或使用默认值?

python - 如何使用递归函数检查两个节点是否连接

python - struct.unpack 不返回字符串

python - PySide/PyQt 检测用户是否试图关闭窗口

python - 将文本绘制到图像时出现字体错误

python - django变量转换为输入文本值

python - 找不到页面 404 Django 媒体文件