django.conf.settings和import settings之间有什么区别吗?

103

在Django应用程序中,以下导入语句之间的基本区别是什么?

import settings

并且

from django.conf import settings

1
+1 因为对于新手 Django 开发者来说,这是一个非常有趣的问题。 - user237076
1个回答

138
import settings

将导入你的 Django 项目的设置(.py)模块(当然,如果你是从应用程序的“根”包编写此代码)

from django.conf import settings

将从django.conf包(Django提供的文件)导入设置对象这很重要, 因为

[..]请注意,您的代码不应从global_settings或自己的设置文件中导入。django.conf.settings抽象了默认设置和特定于站点的设置的概念;它呈现单个接口。它还将使用设置的代码与设置位置分离。

更新:如果您想定义一些自己的设置,请参阅文档的此部分


4
FYI,global_settings是django.conf包中的另一个模块。正如文档所说,请勿使用它。 - user237076
3
请注意,在进行单元测试时,如果希望能够覆盖写设置,使用from django.conf import settings是至关重要的。 - Joris
5
请注意,所有的设置名称 应该大写。也就是说,如果你在设置中有一个变量 my_var,那么以下代码将会失败:from django.conf import settings... settings.my_var。但是如果你把它命名为 MY_VAR,它就会成功! - nik_m

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接