django.conf.settings 和导入设置有啥区别吗?

Posted

技术标签:

【中文标题】django.conf.settings 和导入设置有啥区别吗?【英文标题】:Is there any difference between django.conf.settings and import settings?django.conf.settings 和导入设置有什么区别吗? 【发布时间】:2012-02-05 12:51:03 【问题描述】:

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

import settings

from django.conf import settings

【问题讨论】:

+1 因为对于 Django 开发新手来说,这是一个非常有趣的问题。 【参考方案1】:
import settings

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

from django.conf import settings

将从 django.conf 包(Django 提供的文件)导入设置 object。 This is important,因为

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

更新:如果您想定义一些自己的设置,请参阅this part of the documentation

【讨论】:

仅供参考,global_settings 是 django.conf 包中的另一个模块。正如文档所说,不要使用它。 请注意,如果您还希望能够在单元测试期间覆盖设置,则使用 from django.conf import settings 至关重要。 另请注意,所有设置名称应为大写。也就是说,如果您的设置中有一个 var my_var,那么这将失败:from django.conf import settings...settings.my_var。但如果你把它命名为MY_VAR,它就会成功!

以上是关于django.conf.settings 和导入设置有啥区别吗?的主要内容,如果未能解决你的问题,请参考以下文章