我正在为 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 的任何其他部分。
但是,我间歇性地遇到两个错误之一:
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”。我知道模板引擎会找到它们,因为我从扩展 common.html 的“html/edit_budget.html”开始。
看起来好像设置模块以某种方式未应用(因为这就是将 html 添加到模板搜索路径的原因)。