2011-04-07 50 views
3

我想知道是否有可能分開Django中的「本地」配置(靜態本地路徑,模板內容必須是絕對的,本地數據庫信息等。 。)來自「全局」配置(URL,中間件類,安裝的應用程序等),以便幾個人可以在Git或SVN上使用同一個項目,而無需在每次提交完成時重寫本地設置!Django settings.py:獨立的本地和全局配置

謝謝!

+0

[如何在Django中管理本地和生產設置?](http://stackoverflow.com/questions/1626326/how-to-manage-local-vs-production-settings-in-django) – 2011-04-07 15:59:57

+0

另見http://stackoverflow.com/questions/88259/how-do-you-configure-django-for-simple-development-and-deloyment – 2011-04-07 16:00:15

回答

12

是的,當然。 settings.py文件只是Python,因此您可以在其中執行任何操作 - 包括動態設置,並導入其他文件以覆蓋。

所以這裏有兩種方法。首先不是硬編碼任何路徑,而是動態計算它們。

PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__)) 
TEMPLATE_DIRS = [ 
    os.path.join(PROJECT_ROOT, "templates"), 
] 

等神奇的Python關鍵詞__file__給出了路徑添加到當前文件。

第二是具有local_settings.py文件SVN,這是在主settings.py的進口的外面和覆蓋任何設置有:

try: 
    from local_settings import * 
except ImportError: 
    pass 

在try /除外,是確保即使local_settings不存在,它仍然有效。

當然,你可以嘗試這些方法的組合。