如何将dictionary对象传递给jinja2,其中dict.keys是令牌,dictionary值是我想要显示的



我是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)

最新更新