2011-05-01 2 views
2

저는 migrating a Google App Engine application from Django 0.96 to 1.2입니다. 이 과정에서 나는 주 처리기에서 지정한 설정 파일이 더 이상로드되지 않았다는 것을 알았습니다 (지정된 언어 3 개 대신 Django가 기본 언어의 전체 목록을 django/conf/global_settings.py 파일로로드했습니다). 나는이 변경되지 않는 것으로되어있는 설명서에서 읽은 바로는DJANGO_SETTINGS_MODULE - 지정된 설정 파일이로드되지 않았습니까?

import os 
os.environ['DJANGO_SETTINGS_MODULE'] = 'conf.settings' 

:

은 0.96에서이 같은 파일을 지정했습니다. 그러나이 같은 버전 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.__getattr__에서 LazySettings._import_settings이 호출되어 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() 

, 그것은 잘못된/이상한 민간 기능은 수동으로 ... 왜 내 사용자 지정 설정을 더 이상 가져 오지 파일인지 전화를해야하는 느낌?

답변

2

here에 무슨 일이 일어나고 있는지의 좋은 설명이있다 :

장고 설정이 게으르게 지정된 settings.py에서로드, 그들은 액세스되는 처음. 문제는 webapp.template을 가져 오면 django.conf.settings.configure()가 으로 설정되어 일부 설정을 설정하려고 시도하는 것입니다. webapp.template 어떤 설정 (설정 접근이 설정이 이미 존재하는 을 발견하고, 더 이상로드하지 않는 한) 다음 settings.py로드 가 결코 액세스 전에 수입 그러므로합니다. webapp.template 수입 전에

이에 대한 해결책은 settings.py를로드, 설정에 접근을 강제하는 것입니다. 그런 다음 webapp.template이 나중에 가져온 경우 django.conf.settings.configure()를 호출하면 이 무시됩니다.

소리가 버그와 같습니다. the issue tracker에 제출할 수 있습니다.

+0

사실, webapp을 가져 오기 전에 설정 가져 오기를 이동하면이 문제가 해결됩니다. 이 문제를 신고 해 드리겠습니다. 감사. – Emilien

관련 문제