Из-за предупреждения App Engine
Вы используете версию Django по умолчанию (0.96). Версия Django по умолчанию изменится в версии App Engine в ближайшем будущем. Пожалуйста, вызовите use_library (), чтобы явно выбрать версию Django. Для получения дополнительной информации см http://code.google.com/appengine/docs/python/tools/libraries.html#Django
Я добавил две строки кода в начало main.py
from google.appengine.dist import use_library
use_library("django", "1.2")
Этот код полностью сломал мое приложение, подняв эту ошибку
File "/home/adel/Software/google_appengine/lib/django_1_2/django/template/loader.py", line 138, in find_template
raise TemplateDoesNotExist(name)
TemplateDoesNotExist: /home/adel/Workspace/jeeneo/site/Common/templates/en_US/template.html
Я занимался поиском и нашел разработчиков с похожей проблемой относительного пути, который больше не поддерживается в Django, в моем случае я использовал абсолютный путь, и мой код структурирован таким образом
site/
Frontpage/
template/en_US/index.html
index.py
Events/
template/en_US/event.html
template/en_US/create.html
event.py
create.py
Common/
template/en_US/template.html
template.py
Каждому классу свойственен шаблон класса, подобный этому
from Common import Template
class Event(Template):
def get(self):
Тогда звоните
self.render(__file__, "event.html")
Для рендеринга HTML-файла, функция рендеринга имеет это внутри
def render(self, path, html):
self.base = self.get_base()
email = None
if self.user:
self.auth_url = users.create_logout_url("/")
email = self.user.email
else:
self.auth_url = users.create_login_url(self.request.uri)
self.template.update({
"base": self.base,
"user": self.user,
"lang": self.lang,
"template_html" : os.path.join(os.path.dirname(__file__), "templates/%s/template.html" % self.lang),
"email": email,
"auth_url": self.auth_url
})
html = os.path.join(os.path.dirname(path), "templates/%s/%s" % (self.lang, html))
self.template.update(self.data)
self.response.out.write(template.render(html, self.template))
И HTML-файл (event.html) имеет этот код
{% extends template_html %}
У меня на уме два решения, возможно, реструктурировать все и сделать все шаблоны в одной папке, или у меня локальная установка Django 0.96 на App Engine ... но я уверен, что должно быть более простое решение.