【发布时间】:2011-08-16 06:43:24
【问题描述】:
我是migrating a Google App Engine application from Django 0.96 to 1.2。在此过程中,我注意到我在主处理程序中指定的设置文件不再加载(而不是 3 种指定语言,Django 从它的 django/conf/global_settings.py 文件加载了默认语言的完整列表)。
在 0.96 中,我这样指定文件:
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'conf.settings'
根据我在文档中阅读的内容,这不应该被更改。但是,当像这样指定 1.2 版本时:
from google.appengine.dist import use_library
use_library('django', '1.2')
conf.settings 不再导入。在 GAE 的 SDK 中挖掘了一下,我注意到 google_appengine/lib/django_<VERS>/django/conf/__init__.py 文件的 0.96 和 1.2 版本的工作方式不同。
在 0.96 中,LazySettings._import_settings 会从 LazySettings.__getattr__ 调用,这会导致 os.environ['DJANGO_SETTINGS_MODULE'] 中指定的文件被导入。
在 1.2 中,LazySettings._setup 似乎没有在任何地方调用。
如果我在主处理程序中添加对settings._setup() 的手动调用,自定义设置文件会正确导入。像这样:
from django.conf import settings
settings._target = None # Force Django to reload settings
settings._setup()
但是,不得不手动调用该私有函数感觉很奇怪/错误...为什么我的自定义设置文件不再导入?
【问题讨论】:
标签: django google-app-engine django-settings django-1.2