我是GAE/Python新手。我正在尝试呈现一个jinja2模板,其中模板值位于dictionary对象中。我想做这样的事情:
some markup {{ dict['token001'] }} some more markup {{ dict['token002'] }} etc.
其中token001和token002是字典中的键的值。
我想这个电话看起来像:
template = jinja_environment.get_template(fileName.html)
outputblob = template.render(dict)
有人能告诉我怎样才能做到这一点吗?我有一千多个标记化的文件,每个文件多达几十个标记。在一个数据库中,同一个令牌有多组值,逻辑提取一组令牌和值,并将它们放入字典中,这就是我想要传递给jinja2进行渲染的内容。
有人能告诉我如何将dictionary对象传递到jinja2,其中dictionary键是模板令牌吗?
感谢您对解决方案的任何建议或建议。
+++++编辑的问题++++++我尝试了以下方法,结果似乎达到了一定的效果。
模板文件中的令牌现在看起来像{{tokenvals.tkn001}}
tokenvals = q.fetch(999)
tokendict = {}
for tokenval in tokenvals:
tokendict[tokenval.tknID] = tokenval.tknValue
template = jinja_environment.get_template('khan-exercise.html')
bloboutput = template.render(tokenvals = tokendict)
至少到目前为止我还没有收到错误消息。然而,当我试图将结果保存在以下代码中时,我得到了一个错误:
f = GeneratedFiles(
TemplateName = TemplateName
, FileTxt = bloboutput
, Status = 'Published'
)
f.put()
这导致错误BadValueError:应为str,得到u'
数据的模型为:
class GeneratedFiles(ndb.Model):
TemplateName = ndb.StringProperty()
FileTxt = ndb.BlobProperty()
Status = ndb.StringProperty(default="Pending Translation")
我注意到的一件事是,呈现的字符串包括\n所有有回车符的地方。但是,整个呈现的文本是一个介于撇号(单引号-')之间的字符串。模板文件本身包括很多双引号-")。我认为这与它无关。
我经常看到错误消息:应为str,后面跟着文本,但我一直不知道是什么原因导致的。
如有任何进一步的建议,我们将不胜感激。
您也可以让我们知道什么对您不起作用。你试过按你想象的那样打电话吗?什么坏了?
我认为这应该行得通。。
some markup {{ tokens.token001 }} some more markup {{ tokens.token002 }} etc.
tokens = get_tokens_dict()
template = jinja_environment.get_template(fileName.html)
outputblob = template.render(tokens=tokens)
或者。。
data = { 'tokens': tokens }
outputblob = template.render(**data)