在 Django 中导入设置

Posted

技术标签:

【中文标题】在 Django 中导入设置【英文标题】:Importing settings in Django 【发布时间】:2016-03-24 14:31:10 【问题描述】:

我正在查看 GitHub 上的 Django source code(特别是 django.conf 模块),我从 this post 了解到,您永远不应该导入 global_settings 模块本身,而应该只导入:

from django.conf import settings

所以我知道这是可行的,但作为一个习惯于查看源代码以了解某些“幕后”内容如何适用于 Django 的人,我想了解更多详细信息关于在 django/conf 目录中没有 settings.py 时如何导入“设置”。

我假设这是一个 django 内置程序,您可以“从 django.conf 导入设置”,它被 django 引擎拦截,并构建了正确的设置模块/等。然后就过去了。是这样吗,还是这里发生了我遗漏的其他事情?

【问题讨论】:

【参考方案1】:

from django.conf import settings 说“查找django.conf 模块并从中导入一个名为settings 的变量”。

django.conf是一个包,所以源代码django.confmodule可以在文件django/conf/__init__.py中找到。看一下,最后有一个名为settings 的变量,它是LazySettings 的一个实例。 LazySettings 的源代码位于文件开头附近。

【讨论】:

这正是我想要的。我认为这是一个 django 问题,但更好的是它原来是一个 python 问题。非常感谢! (我会添加一个 python 标签,这只是因为) 我们可以在 Python shell 中打印settings.BASE_DIR。但是BASE_DIRLazySettings 类中定义在哪里?

以上是关于在 Django 中导入设置的主要内容,如果未能解决你的问题,请参考以下文章

在 django 中导入设置时出现奇怪的错误

建议在数据库项目中导入设置

在 Vue 3 设置中导入函数

如何在 Android Studio 中导入现有项目时设置 gradle home

为啥我不能在 Django 项目中导入模块?

无法在 Python 中导入位置设置为 PYTHONPATH 的模块