(也許這個問題更多的是Python的,但Django是上下文,所以這裏有雲)在Django中,是否可以定義基於另一個的動態計算設置?
假設你需要設置FOO
,其價值取決於設定BAR
的值(簡單的情況是讓CELERY_RESULT_BACKEND
等於BROKER_URL
) 。
如果你只有一個設置文件,這是簡單的實現:
BAR = some_value
FOO = some_function(BAR)
然而,這是很常見的有很多設置文件,每一個環境(如生產,開發,測試階段,等),從書「的Django的兩勺:最佳實踐的Django 1.5」中的project layout建議。
在這種情況下有一個settings.base
模塊,其通過settings.dev
,settings.prod
其所有內容導入等,其添加他們自己的特定的值或覆蓋在settings.base
定義。
當我想在其中一些模塊中覆蓋BAR
時,會出現問題,但我必須記得在每次覆蓋後重新計算FOO
。這很容易出錯,而不是幹。
lambda函數不會工作,因爲該設置將是一個可調用的,而不是結果值。內置函數/裝飾器property
將是理想的,但它只能在類中使用(新樣式)。我什麼都不知道。
想法?
嗯。這有點不整潔,但可能會將您的相關設置拆分爲不同的文件並在設置BAR之後導入該文件? –