Django - 导入django.conf.settings和导入设置之间的区别

ozg*_*gur 97 python django

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

import settings
Run Code Online (Sandbox Code Playgroud)

from django.conf import settings
Run Code Online (Sandbox Code Playgroud)

dgr*_*tin 132

import settings
Run Code Online (Sandbox Code Playgroud)

将导入Django项目的设置(.py)模块(当然,如果您从应用程序的"root"包中编写此代码)

from django.conf import settings
Run Code Online (Sandbox Code Playgroud)

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

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

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

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