【问题标题】:What's the difference between `from django.conf import settings` and `import settings` in a Django projectDjango项目中的`from django.conf import settings`和`import settings`有什么区别
【发布时间】:2013-11-27 08:56:34
【问题描述】:

我读到大多数人都做from django.conf import settings,但我不明白在 django 项目文件中简单地做import settings 的区别。谁能解释一下区别?

【问题讨论】:

  • django.conf 设置是 django 默认或“全局”设置,您可以使用自己的基于项目的设置覆盖。
  • 永远不要使用第二种形式。第一个是唯一正确的。
  • 但是为什么不使用第二个呢?
  • Django Importing Settings File 的可能重复项

标签: python django django-settings


【解决方案1】:

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

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

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

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

希望这会有所帮助。

【讨论】:

  • import settings 将导入在sys.path 中找到的第一个名为settings.py 的python 模块。这可能不是“站点定义的设置文件”,它在环境变量“DJANGO_SETTINGS_MODULE”中查找,可以是任何 python 包或模块。
  • @brunodesthuilliers 谢谢你。考虑到您的更正,我更新了我的答案。
  • 将settings.py 放在manage.py 旁边(在项目根目录中)是默认的Django 设置吗? O.o 我相信默认设置是<project-name>/settings.py。至少django-admin startproject 是这样写的。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2019-06-07
    • 2020-07-23
    • 1970-01-01
    • 2011-07-04
    • 2013-05-20
    • 2015-08-24
    • 1970-01-01
    • 2017-09-18
    • 2018-09-21
    相关资源
    最近更新 更多