我无法意识到我做错了什么。我在 GAE 数据存储中有一些条目。我进口了 Jinja2。我想使用 Jinja2 在页面上显示数据存储条目。我创建了一个快捷函数来调用 Jinja2 渲染函数。它看起来像这样:
def render_template(response, template_name, vars=dict()):
template_dirs = [os.path.join(root(), globals['templates_root'])]
env = Environment(loader=FileSystemLoader(template_dirs))
try:
template = env.get_template(template_name)
except TemplateNotFound:
raise TemplateNotFound(template_name)
content = template.render(vars)
response.response.out.write(content)
所以,我唯一需要传递给这个函数的是一个模板文件名和一个带有变量的字典(如果存在)。我这样称呼这个函数:
class MainHandler(webapp.RequestHandler):
def get(self, *args, **kwargs):
q = db.GqlQuery("SELECT * FROM Person")
persons = q.fetch(20)
utils.render_template(self, 'persons.html', persons)
模型Person
看起来像这样,没什么特别的:
class Person(db.Model):
first_name = db.StringProperty()
last_name = db.StringProperty()
birth_date = db.DateProperty()
当我尝试将persons
字典传递给 时render_template
,它会引发错误:
TypeError: cannot convert dictionary update sequence element #0 to a sequence
它不会渲染。当我将 empty{}
作为persons
参数传递时,它会呈现,但显然没有我的数据。我做错了什么?我确信我错过了一些小东西,但我不知道到底是什么。谢谢!