我mongo_db在 settings.py 中定义了一个自定义变量:
# connect to test database for tests and real database otherwise
if is_test():
mongo_db = mongoengine.connect(db='test-workflows', host='workflows-mongo')
else:
mongo_db = mongoengine.connect(db='workflows', host='workflows-mongo')
Run Code Online (Sandbox Code Playgroud)
现在,我试图从tests.py(或从python manage.py shell)导入它,但都没有成功:
from django.conf import settings
settings.mongo_db
AttributeError: 'Settings' object has no attribute 'mongo_db'
Run Code Online (Sandbox Code Playgroud)
怎么了?
更新:
IIRC,Djangodjango.conf.settings通过django.conf.global_settings使用在settings.py.
因此,可能有问题的from django.conf import settings; settings.mongo_db是 Django 可能不会更新django.conf.settings为mongo_db,因为它不在默认选项中。
此外,Django 文档说这django.conf.settings是一个object,而不是一个module,所以你不能说from django.conf.settings import VARIABLE. 幸运的是,我不会那样做。
导入失败,因为您没有遵循 Django指南。
用于创建您自己的设置。
- 设置名称必须全部大写。
- 不要重新发明一个已经存在的设置。
请注意,您的代码不应从 global_settings 或您自己的设置文件中导入。
django.conf.settings 抽象了默认设置和站点特定设置的概念;它提供了一个单一的界面。
像这样更改 settings.py 中的代码。(替换mongo_db为MONGO_DB)
if is_test():
MONGO_DB = mongoengine.connect(db='test-workflows', host='workflows-mongo')
else:
MONGO_DB = mongoengine.connect(db='workflows', host='workflows-mongo')
Run Code Online (Sandbox Code Playgroud)
现在您可以从 django shell 和所有其他地方导入。
您正在尝试从 django 的设置而不是您自己的 settings.py 导入
from django.conf import settings
Run Code Online (Sandbox Code Playgroud)
应该
from your_app import settings
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2066 次 |
| 最近记录: |