带有if语句的Google App Engine上的Django模板

时间:2011-04-15 13:36:41

标签: django google-app-engine

我是谷歌应用引擎的新手,刚刚开始阅读。所以我开始在GAE上实现一个简单的应用程序,并很快得到一个错误,说“TemplateSyntaxError”,“如果'语句格式不正确”,当我只是渲染一个使用if语句的html时。我使用ifequal语句解决了它的问题,但本教程向我展示了在index.html中使用if语句(http://code.google.com/appengine/docs/python/gettingstarted/templates.html)

我是否会错过在模板中使用if语句的任何内容?

谢谢, 柳

修订版


以下是错误的详细信息。我认为克里斯的答案会让我使用“智能”,如果标签。我会尽快将Django版本更新为1.2。

Traceback (most recent call last):
  File "C:\Program Files\Google\google_appengine\google\appengine\ext\webapp\__init__.py", line 634, in __call__
    handler.get(*groups)
  File "C:\Store house\gae\community\src\community.py", line 24, in get
    self.response.out.write(template.render(path, template_values))
  File "C:\Program Files\Google\google_appengine\google\appengine\ext\webapp\template.py", line 72, in render
    t = load(template_path, debug)
  File "C:\Program Files\Google\google_appengine\google\appengine\ext\webapp\template.py", line 100, in load
    template = django.template.loader.get_template(file_name)
  File "C:\Program Files\Google\google_appengine\lib\django_0_96\django\template\loader.py", line 80, in get_template
    template = get_template_from_string(source, origin, template_name)
  File "C:\Program Files\Google\google_appengine\lib\django_0_96\django\template\loader.py", line 88, in get_template_from_string
    return Template(source, origin, name)
  File "C:\Program Files\Google\google_appengine\lib\django_0_96\django\template\__init__.py", line 158, in __init__
    self.nodelist = compile_string(template_string, origin)
  File "C:\Program Files\Google\google_appengine\lib\django_0_96\django\template\__init__.py", line 174, in compile_string
    return parser.parse()
  File "C:\Program Files\Google\google_appengine\lib\django_0_96\django\template\__init__.py", line 273, in parse
    compiled_result = compile_func(self, token)
  File "C:\Program Files\Google\google_appengine\lib\django_0_96\django\template\loader_tags.py", line 154, in do_extends
    nodelist = parser.parse()
  File "C:\Program Files\Google\google_appengine\lib\django_0_96\django\template\__init__.py", line 273, in parse
    compiled_result = compile_func(self, token)
  File "C:\Program Files\Google\google_appengine\lib\django_0_96\django\template\loader_tags.py", line 132, in do_block
    nodelist = parser.parse(('endblock', 'endblock %s' % block_name))
  File "C:\Program Files\Google\google_appengine\lib\django_0_96\django\template\__init__.py", line 273, in parse
    compiled_result = compile_func(self, token)
  File "C:\Program Files\Google\google_appengine\lib\django_0_96\django\template\defaulttags.py", line 655, in do_if
    raise TemplateSyntaxError, "'if' statement improperly formatted"
TemplateSyntaxError: 'if' statement improperly formatted

更新2:
根据这篇文章(http://code.google.com/appengine/docs/python/tools/libraries.html#Django),目前的谷歌应用引擎已包含在Django 1.2中,但目前的默认版本是0.96,这就是为什么我不能不使用if标签。要使用1.2版,请按照上面链接中的说明操作。现在,我可以使用“智能”标签。谢谢大家:)

2 个答案:

答案 0 :(得分:5)

如果您尝试使用标记:

{% if x == 1 %}

并且您收到的错误已通过

解决
{% ifequal x 1 %}

这是您的Django版本为1.1或更低的标志。如果标签为came with version 1.2

,则为“智能”

编辑添加,Django 1.2及更高版本适用于GAE。如果您确实在运行旧版本的Django,请参阅this blog post了解如何设置它。

答案 1 :(得分:0)

确保您完全遵循django模板的语法。确保将{if}括在{% %}内。还可以确保{%%}for之间有空格。 要了解更多信息,请仔细阅读Django templating

{% if var1 %}
 {{ var1|safe }}
{% endif %}