2013-11-14 145 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 /第一个更好/第一个是唯一正确的/ –

相关问题