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 和导入设置有啥区别吗?的主要内容,如果未能解决你的问题,请参考以下文章

模拟 django 设置:AttributeError:“设置”对象没有属性“FOO”

Celery add_periodic_task 阻止 Django 在 uwsgi 环境中运行

Django中使用Celery,定制应用程序中定义的shared_task未在定期任务管理页面的注册任务中显示

Python-Django模型迁移用户数据库模型的迁移(对其他数据库迁移同样适用)!!!

python实现xmind快速设计测试用例并导入TestLink

怎么从SQL数据库中导出 数据表 和导入脚本