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模型迁移用户数据库模型的迁移(对其他数据库迁移同样适用)!!!