Я мигрирую приложение 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, я заметил, что версии 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()
Однако мне кажется странным/неправильным вызывать эту приватную функцию вручную... Почему мой файл пользовательских настроек больше не импортируется?