无法从 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”?