Google App Engine 用の Windows Launcher 開発環境を使用しています。
Django 1.1.2 ソースをダウンロードし、「django」サブディレクトリを展開して、アプリケーション ディレクトリ (app.yaml のピア) 内に配置しました。
各 .py ソース ファイルの先頭で、次のようにします。
import settings
import os
os.environ["DJANGO_SETTINGS_MODULE"] = 'settings'
私のファイル settings.py (アプリ ディレクトリのルートにも存在します) で、次のようにします。
DEBUG = True
TEMPLATE_DIRS = ('html')
INSTALLED_APPS = ('filters')
import os
os.environ["DJANGO_SETTINGS_MODULE"] = 'settings'
from google.appengine.dist import use_library
use_library('django', '1.1')
from django.template import loader
はい、これは少しやり過ぎに見えますね。
私はdjango.templateのみを使用しています。私は、django の他の部分を明示的に使用していません。
ただし、断続的に次の 2 つのエラーのいずれかが発生します。
1) Django は、DJANGO_SETTINGS_MODULE が定義されていないと文句を言います。
2) Django は、common.html (私が他のテンプレートで拡張しているテンプレート) が存在しないと文句を言います。
95% の確率で、これらのエラーは発生せず、ランダムに発生し始めます。その状態になると、ローカルサーバーは「くさび」のように見え、再起動すると通常は修正されます。
これが発生する原因は何ですか?どうすればよいですか? どうすればデバッグできますか?
エラーからのトレースバックは次のとおりです。
Traceback (most recent call last):
File "C:\code\kwbudget\edit_budget.py", line 34, in get
self.response.out.write(t.render(template.Context(values)))
File "C:\code\kwbudget\django\template\__init__.py", line 165, in render
return self.nodelist.render(context)
File "C:\code\kwbudget\django\template\__init__.py", line 784, in render
bits.append(self.render_node(node, context))
File "C:\code\kwbudget\django\template\__init__.py", line 797, in render_node
return node.render(context)
File "C:\code\kwbudget\django\template\loader_tags.py", line 71, in render
compiled_parent = self.get_parent(context)
File "C:\code\kwbudget\django\template\loader_tags.py", line 66, in get_parent
raise TemplateSyntaxError, "Template %r cannot be extended, because it doesn't exist" % parent
TemplateSyntaxError: Template u'common.html' cannot be extended, because it doesn't exist
そして、edit_budget.py は、まさに私が上に含めた行から始まります。
すべてのテンプレートはルート ディレクトリの「html」という名前のディレクトリにあり、「html/common.html」が存在します。テンプレート エンジンがそれらを見つけることはわかっています。
設定モジュールが何らかの形で適用されていないように見えます (それがテンプレートの検索パスに html を追加するためです)。