2013-11-14 144 views
32

我正在閱讀大多數人的文章from django.conf import settings,但我沒有承擔差異,只是在django項目中做import settings文件。任何人都可以解釋這個區別嗎Django項目中`from django.conf import settings`和`import settings`之間的區別

+0

django.conf設置爲django默認設置或「全局」設置,您可以使用自己的基於項目的設置來覆蓋它們。 – Jingo

+1

永遠不要使用第二種形式。第一個是唯一正確的。 –

+1

但爲什麼不使用第二個? – tzenderman

回答

37

import settings將導入在sys.path中找到的第一個python模塊,名稱爲settings.py,通常(在默認的django設置中)。它只允許訪問您的站點定義的設置文件,它會覆蓋django的默認設置(django.conf.global_settings)。

因此,如果您嘗試訪問您的設置文件中未指定的有效django設置,您將會收到錯誤消息。

django.conf.settings不是一個文件,而是一個抽象的概念,默認設置和您的網站特定設置的類。當您使用from django.conf import settings時,Django還會執行其他檢查。

你也可以在django docs找到它。

希望這會有所幫助。

+3

'導入設置'會導入在'sys.path'中找到的名爲'settings.py'的第一個python模塊。這可能不是「站點定義的設置文件」,它在環境變量「DJANGO_SETTINGS_MODULE」中查找,可以是任何python包或模塊。 –

+0

@brunodesthuilliers謝謝你。我更新我的答案,並注意到你的改正。 – juliocesar

7

from django.conf import settings是更好的選擇。

我對同一個django項目(一個用於「live」,一個用於「dev」)使用不同的設置文件,第一個將選擇正在執行的項目。

+1

s /第一個更好/第一個是唯一正確的/ –

相關問題