Я использую среду разработки Windows Launcher для Google App Engine.
Я скачал исходный код 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_SETTINGS_MODULE не определен.
2) Джанго жалуется, что 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 / edit_budget.html", который расширяет common.html.
Выглядит так, как будто модуль настроек как-то не применяется (потому что это то, что добавляет html в путь поиска шаблонов).