Я не могу понять, что я делаю неправильно. У меня есть некоторые записи в хранилище данных 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
И это не делает. Когда я передаю пустой {}
в качестве аргумента persons
, он рендерится, но, очевидно, без моих данных.
Что я делаю не так? Я уверен, что есть кое-что маленькое, что я пропустил, но я понятия не имею, что именно. Спасибо!