我正在尝试使用Jinja2来填充值来创建一个structuredText文档(我将使用rst2pdf
on)。根据外部因素,文档中的一些要点需要包含或省略,因此当我发现Jinja2有一个[generate()][1]
函数来获得生成器时,我认为这对任务来说是完美的。在
不幸的是,当我使用它时,生成器中唯一的项是整个rst模板(插入了值),而不是像我希望的那样分隔成行。另外,除了链接的文档之外,我还不能找到更多关于generate()
的信息,所以我不确定需要修复的方面是什么。在
这是我的代码:
doc_info = {"name": "Kaladin",
"address": "Shattered Plains",}
env = Environment(loader=PackageLoader('src', 'templates'))
template = env.get_template("Example.rst")
template_gen = template.generate(doc_info)
print template_gen.next() # Would be looped if it worked as expected
在示例.rst公司名称:
^{pr2}$注意:在本例中,由于name
和address
的可变长度,表将不对齐,但在我的实际代码中,我调整了空格,因此这不是问题所在。在
使用render()
正如预期的那样工作,只是generate()
并没有给我我所期望的。在
有没有什么方法可以表示我希望生成器项按行尾分开?还是我做错了什么?如果我用错了,还有更好的方法,我也会接受的。在
派对有点晚了(4年!),但看起来
generate()
函数可以用于for循环和if块,但是您的模板没有这些。在要决定在输出中包含什么,请使用
{% if <external.factor> %}
并将外部因子传递给generate(或者render()
不清楚此应用程序需要generate()
)。在相关问题 更多 >
编程相关推荐