代码之家  ›  专栏  ›  技术社区  ›  Phil

google app engine(python):templatesyntaxerror:“for”五个单词的语句应该以“reversed”结尾

  •  6
  • Phil  · 技术社区  · 15 年前

    这是在使用web应用程序框架,而不是django。

    下面的模板代码给了我一个 templatesyntaxerror:“for”五个字的语句应以“reversed”结尾 当我试图呈现字典时出错。我不明白是什么导致了这个错误。有人能帮我照一下吗?

    {% for code, name in charts.items %}
       <option value="{{code}}">{{name}}</option>
    {% endfor %}
    

    我用以下方法渲染它:

    class GenerateChart(basewebview):
    
        def get(self):
            values = {"datepicker":True}
            values["charts"] = {"p3": "3D Pie Chart", "p": "Segmented Pied Chart"}
            self.render_page("generatechart.html", values)
    
    class basewebview(webapp.RequestHandler):
        ''' Base class for all webapp.RequestHandler type classes '''
        def render_page(self, filename, template_values=dict()):
            filename = "%s/%s" % (_template_dir, filename)
            path = os.path.join(os.path.dirname(__file__), filename)
            self.response.out.write(template.render(path, template_values))
    
    1 回复  |  直到 15 年前
        1
  •  13
  •   Alex Martelli    15 年前

    这是在使用web应用程序框架, 不是Django。

    但是除了框架之外,您必须使用django的模板——显然是在旧版本中,它不支持 for --可能是 0.96 应用程序引擎的默认版本。要使用更现代的django的任何部分(包括“只是模板”),必须有 settings.py 文件和DO:

    import os
    os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
    
    from google.appengine.dist import use_library
    use_library('django', '1.1')
    

    the docs . 在那之后你可以 from django import template 您将使用django的模板引擎的1.1版本。