2015-12-02 102 views
2

我想導入local_settings.py文件(這是不是在我的VCS系統),用於覆蓋從settings.pyDjango的LOCAL_SETTINGS導入錯誤

數據庫設置,爲此我加入這些線路在最後我的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', 
    } 
} 

在此先感謝您的幫助!

回答

1

它不起作用,因爲您忘記了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 
... 

並設置文件(E.gdev.pylocal.py):

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

# ... 

使用總是相對的進口時,它的可能。

關於數據庫,您不應該在base.py中配置它們。在每個特定的設置文件中聲明它們。

+0

這是完美的作品!謝謝你的幫助! –

+0

你的歡迎:) –