Google App Engine(python):TemplateSyntaxError:带有五个单词的'for'语句应以'reversed'结尾


问题内容

这是使用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))

问题答案:

这是使用Web应用程序框架,而不是Django。

但是除了框架,您必须使用Django的模板-显然是在旧版本中,该版本不支持“自动拆包”样式for-可能是App
Engine的默认版本0.96。要使用更现代的Django的任何部分(包括“仅模板”),您必须具有一个settings.py文件并执行以下操作:

import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

from google.appengine.dist import use_library
use_library('django', '1.1')

根据docs。之后,您from django import template将可以使用Django的模板引擎的1.1版本。