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

6 投票
1 回答
914 浏览
提问于 2025-04-15 21:08

这段话是在说使用的是一个网页应用框架,而不是Django。

接下来这段模板代码在我尝试渲染一个字典时,出现了一个模板语法错误:'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 个回答

13

这是在使用网页应用框架,而不是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')

按照文档的说明。之后你就可以from django import template,这样你就能使用Django模板引擎的1.1版本了。

撰写回答