我正在将 Google App Engine 应用程序从 Django 0.96 迁移到 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
被调用 from 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()
但是,必须手动调用该私有函数感觉很奇怪/错误……为什么我的自定义设置文件不再导入?