我想导入 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.py
或 local.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/