ошибка импорта django local_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 не изменились, и я получаю сообщение Unable to load 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 = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'mydb',
        'USER': 'my_project',
        'PASSWORD': 'my_password',
        'HOST': '127.0.0.1',
        'PORT': '5432',
    }
}

Заранее спасибо за вашу помощь !


person epi.log    schedule 02.12.2015    source источник


Ответы (2)


Это не работает, потому что вы забыли . перед 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. Объявите их в каждом конкретном файле настроек.

person Louis Barranqueiro    schedule 02.12.2015

from rororo.settings import inject_settings

в конце вашего settings.py

inject_settings('settings_local', locals(), True)

person denplis    schedule 18.01.2019