无法从 django 的设置文件中获取设置

Posted

技术标签:

【中文标题】无法从 django 的设置文件中获取设置【英文标题】:Unable to get a setting from settings file in django 【发布时间】:2012-07-22 18:58:17 【问题描述】:

我在settings.py 文件中有一个设置说gi。我创建了一个单独的 python 文件(即我没有在视图中使用它)并将 import 语句用作:

from django.conf import settings

但是当我尝试访问settings.gi 时,它会显示'Settings' object has no attribute 'gi'。少了什么东西? :s

【问题讨论】:

我不知道这是否重要,但是当您尝试访问 settings 时,错误会显示 Settings。会不会是你不小心用了大写的s? @BrtH 不,你可以查看 django.conf 的源代码,你会看到 settings 是项目 settings 模块的包装器。 【参考方案1】:

来自creating your own settings 上的 Django 文档:

设置名称全部大写。

尝试将设置重命名为GI

【讨论】:

但这只是惯例?我正在使用一些现有的代码,所以我不会重命名设置,因为它也将用于其他应用程序 我使用此代码查看设置for property, value in vars(theObject).iteritems(): print property, ": ", value 它只显示了一个_wrapped 的属性 如果您查看设置对象的source code,您可以看到不是大写的变量将被忽略。也许文档中的“约定”一词不够强大。如果您不想重命名变量,那么这取决于您,但 Django 不会将其视为“设置”,您需要找到不同的方式来导入它。 我已提交拉取请求以使文档更清晰:github.com/django/django/pull/6546/files【参考方案2】:

项目必须添加到 PYTHONPATH 并且必须定义 DJANGO_SETTINGS_MODULE。 请参考下面提到的命令。

export PYTHONPATH=PATH_OF_PROJECT
export DJANGO_SETTINGS_MODULE=settings

【讨论】:

我所有的其他设置都正常工作。例如,数据库连接正常,syncdb 正常。唯一的问题是一个文件使用了设置文件中的设置。 您能否发布您无法访问项目设置文件的文件的其余导入语句。可能是它们的导入或模块名称冲突?尝试使用 Alasdir 提到的大写字母。

以上是关于无法从 django 的设置文件中获取设置的主要内容,如果未能解决你的问题,请参考以下文章

Django + Vuejs 无法从响应头中获取 Csrftoken

如何停止获取 ImportError:将 django 与 wsgi 一起使用时无法导入设置“mofin.settings”?

从数据库动态设置 Django 设置变量

我无法更改主 Django 项目设置文件

Heroku Django 在生产过程中如何获取设置文件?多种设置

Django从当前实例设置初始下拉值?