Google App Engine 中的 Django 模板语法错误

Posted

技术标签:

【中文标题】Google App Engine 中的 Django 模板语法错误【英文标题】:Django Template Syntax Error in Google App Engine 【发布时间】:2011-03-31 19:44:50 【问题描述】:

我尝试在 localhost 上启动我的 Google App Engine 应用程序,但遇到了一个 Django 错误,我被卡住了。

“TemplateSyntaxError: Template 'base/_base.html' 无法扩展,因为它不存在”

我将模板放在 /templates 中,然后将 _base.html 和 index.html 放在 /templates/base 中。谢谢! 埃米尔@proudn00b.com

错误:

Traceback (most recent call last):
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/webapp/__init__.py", line 511, in __call__
    handler.get(*groups)
  File "/Users/emilepetrone/code/thebuswheel/main.py", line 65, in get
    outstr = template.render(temp,  'path': path )
….

…..
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/django/django/template/loader_tags.py", line 58, in get_parent
    raise TemplateSyntaxError, "Template %r cannot be extended, because it doesn't exist" % parent
TemplateSyntaxError: Template 'base/_base.html' cannot be extended, because it doesn't exist

参考:

def get(self):

    path = self.request.path

    temp = os.path.join(
        os.path.dirname(__file__),
        'templates' + path)

    if not os.path.isfile(temp):
        temp = os.path.join(
            os.path.dirname(__file__),
            'templates/base/index.html')

    outstr = template.render(temp,  'path': path )        
    self.response.out.write(outstr)

【问题讨论】:

【参考方案1】:

您可以仔细检查的另一件事是确保 TEMPLATE_DIRS 设置中的一个路径指向您的模板的根目录。

还要确保它是设置中的完整绝对路径,而不是相对于项目。

【讨论】:

【参考方案2】:

我认为您需要查看您的模板。回溯的重要部分在最后:

模板 'base/_base.html' 无法扩展,因为它不存在

您有名为“base/_base.html”的模板吗?如果没有,请查找其他正在尝试扩展它的模板文件。

【讨论】:

我确实有 base/_base.html 文件,这是唯一的模板文件。 Def 部分的挫折 也许显示您的模板和 yaml 配置文件会有所帮助。 :-) 文件对于***来说太长了,所以我把它们贴在博客上...proudn00b.com/post/976956081/buswheel-files-4-error【参考方案3】:

@jps 的解决方案

将 base/_base.html 重命名为 base.html,没有子目录。使用新路径更新 index.html。

【讨论】:

以上是关于Google App Engine 中的 Django 模板语法错误的主要内容,如果未能解决你的问题,请参考以下文章

NodeJS 中的 Google App Engine 日志记录

Google App Engine 中的 Django 模板语法错误

数据存储区中的 Google App Engine 版本控制

Google App Engine 中的 GeoModel 使用

Google App Engine 中的漂亮网址

将参数传递给 app.yaml Google App Engine 中的 php