【问题标题】:Unable to get a setting from settings file in django无法从 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 模块的包装器。

标签: python django 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 提到的大写字母。
猜你喜欢
  • 2013-04-30
  • 1970-01-01
  • 2023-03-30
  • 2011-03-08
  • 2017-01-04
  • 1970-01-01
  • 2018-01-20
  • 1970-01-01
  • 2014-10-11
相关资源
最近更新 更多