我是 GAE/Python 新手。我正在尝试呈现模板值位于字典对象中的 jinja2 模板。我想做这样的事情:
some markup {{ dict['token001'] }} some more markup {{ dict['token002'] }} etc.
其中 token001 和 token002 是 Dictionary 中键的值。
我想这个电话看起来像:
template = jinja_environment.get_template(fileName.html)
outputblob = template.render(dict)
谁能告诉我如何做到这一点?我有超过一千个标记化文件,每个文件最多有几十个标记。数据库中有相同标记的多组值,逻辑提取一组标记和值并将它们放入字典中,这就是我想要传递给 jinja2 进行渲染的内容。
谁能告诉我如何将字典对象传递给 jinja2,其中字典键是模板标记?
感谢您提供任何解决方案的建议或指示。
+++++编辑的问题++++++ 我尝试了以下方法,它似乎正在发挥作用。
模板文件中的标记现在看起来像 {{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: Expected str, got u'
数据模型为:
class GeneratedFiles(ndb.Model):
TemplateName = ndb.StringProperty()
FileTxt = ndb.BlobProperty()
Status = ndb.StringProperty(default="Pending Translation")
我注意到的一件事是,呈现的字符串在任何有回车的地方都包含 \n 。但是,整个呈现的文本是撇号之间的字符串(单引号 - ')。模板文件本身包含很多双引号 - ")。我认为这与它没有任何关系。
我经常看到错误消息:Expected str, got u' 后跟文本,但我从未弄清楚是什么原因造成的。
任何进一步的建议将不胜感激。