Django项目中的“ from django.conf导入设置”和“导入设置”之间有什么区别


92

我了解到大多数人都这样做,from django.conf import settings但我不理解与仅import settings在django项目文件中进行操作的区别。谁能解释其中的区别?


django.conf设置是django默认设置或“全局”设置,您可以使用自己的基于项目的设置来覆盖它们。
Jingo

7
永远不要使用第二种形式。第一个是唯一正确的。
bruno desthuilliers

2
但是为什么不使用第二个呢?
tzenderman

Answers:


111

import settings通常会导入在中settings.py找到的第一个命名为python的python模块sys.path(默认为django设置)。它仅允许访问您站点定义的设置文件,该文件将覆盖django默认设置(django.conf.global_settings)。

因此,如果您尝试访问未在设置文件中指定的有效django设置,则会收到错误消息。

django.conf.settings不是文件,而是对概念,默认设置和站点特定设置进行抽象的类。使用时Django还会进行其他检查from django.conf import settings

您也可以在django docs中找到它。

希望这可以帮助。


5
import settings将导入在中settings.py找到的第一个python模块sys.path。这可能不是“站点定义的设置文件”,它是在环境变量“ DJANGO_SETTINGS_MODULE”中查找的,可以是任何python软件包或模块。
bruno desthuilliers

@brunodesthuilliers谢谢。得知您的纠正后,我更新了答案。
juliocesar

22

from django.conf import settings 是更好的选择。

我为同一django项目使用了不同的设置文件(一个用于“ live”,一个用于“ dev”),第一个将选择正在执行的文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.