2015-10-05 27 views
1

我有Django的這個文件夾結構如何可以把文件夾中在Django的設置

settings/dev.py 
settings/prod.py 
settings/test.py 

然後我在設置/ common.py常見的設置中,我檢查像

if PROD: 
    from settings.prod import * 
的ENV變量基於ENV變量

他們中的每一個將被激活

我想用這樣的事情在我的代碼

from myapp import settings 

而不是

from myapp.settings import dev 

回答

2

這是我遵循的方法。從Django的Two Scoops那本書中學到了這一點。

  1. 有一個文件,諸如,settings/common.py其中將包含屬性/設置,這是在dev的,督促和測試環境常見。 (你已經有這個。)
  2. 其他3個文件應當:通過增加線from .common import *
    1. 導入從settings/common.py常見的設置,並應包含其自己相應的環境設置。
  3. manage.py文件根據OS環境變量DJANGO_SETTINGS_MODULE決定要導入哪個設置文件。所以,對測試環境的DJANGO_SETTINGS_MODULE值應爲參考mysite.settings.test

鏈接:

  1. Django的文檔django-admin工具 - Link
  2. 兩個Django的樣本項目的瓢 - Link
1

保留您的設置文件夾結構並在那裏創建__init__.py。

請使用如下代碼設置/ __ init__.py:

import os 
# DJANGO_SERVER_TYPE 
# if 1: Production Server 
# else if 2: Test Server 
# else: Development Server 
server_type = os.getenv('DJANGO_SERVER_TYPE') 

if server_type==1: 
    from prod import * 
elif server_type==2: 
    from test import * 
else: 
    from dev import * 

現在,您可以設置所謂的DJANGO_SERVER_TYPE環境變量使用生產,測試或開發服務器和導入設置之間進行選擇:

import settings 
+0

我不知道爲什麼,但我這樣做,我包括'從myapp導入設置'然後我的測試gits這個錯誤'AttributeError:'模塊'對象沒有屬性'test_views''這會消失如果使用正常的設置文件不是文件夾 – user3214546

+0

哪個測試?你可以給我更多的信息嗎? – arkadyzalko

+0

我的意思是在任何測試中,即使它是空的,如果我導入該行,然後我得到該錯誤。如果我刪除該行然後沒有錯誤。但是,如果我在base dir中設置settings.py,然後設置/ dev.py中的所有其他文件,然後在base dor中的settings.py中使用我在__init__.py中使用的任何文件 – user3214546

相關問題