2015-10-05 39 views
1

我想在python中編寫一個腳本來編輯我的django應用程序settigs.py文件。除了將文件作爲文本文件讀取以外,還有其他方式可以編輯設置文件中的變量值並保存它嗎?從外部來源更改django的設置

回答

3

除了將文件作爲文本文件讀取以外,還有其他方法可以編輯設置文件中的變量值並保存嗎?

有沒有必要解析&重寫settings.py等。只需添加如下語句:

import json 
overrides = json.loads(open('settings.json').read()) 
globals().update(overrides) 

settings.json則包含這樣的設置:

{ 
    "MY_SETTING" : "FOO" 
} 

我在這裏使用以.json文件爲例。只要overrides是一本字典,你可以使用任何返回字典的源(例如,yml,你自己的格式,或者甚至是Python的類__dict__)。

結果,settingsdjango.conf進口將包含,如果它是在settings.py直接指定新設置:

$ python manage.py shell 
In [1]: print settings.MY_SETTING 
FOO 
+0

感謝您回覆@miraculixx。我的問題不是很清楚。我有4個django應用程序,所有四個應用程序的設置文件非常相似,但數據庫名稱,密碼,主機等是不同的。我不想直接編輯每個settings.py文件。相反,我創建了一個包含所有設置變量的json文件,當我需要更改應用程序的settings.py文件時,我想運行python腳本並讀取json文件中的值,並且如果json文件中有任何更改valuesthen我想更改設置文件 – sara

+0

中的值,但上述解決方案將完成所有這些工作,但是,您不需要更改settings.py。它會在django加載時自動執行。請注意,通常這種方式是將數據庫名稱,密碼,主機存儲在環境變量中,並使用'os.environ.get('YOUR_VARIABLE')'。 – miraculixx

+0

我希望在編寫我自己的解決方案之前知道這一點!問題:這會監視外部文件,即如果外部文件更改,重新啓動服務器? –