GoogleAppEngineアプリケーションをDjango0.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を少し掘り下げてみると、0.96バージョンと1.2バージョンのgoogle_appengine/lib/django_<VERS>/django/conf/__init__.py
ファイルの動作が異なることに気づきました。
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()
ただし、そのプライベート関数を手動で呼び出さなければならないのは奇妙で間違っていると感じます...カスタム設定ファイルがインポートされなくなったのはなぜですか?