Jinja2的generate()返回整个rst temp

2024-10-01 00:30:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用Jinja2来填充值来创建一个structuredText文档(我将使用rst2pdfon)。根据外部因素,文档中的一些要点需要包含或省略,因此当我发现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}$

注意:在本例中,由于nameaddress的可变长度,表将不对齐,但在我的实际代码中,我调整了空格,因此这不是问题所在。在

使用render()正如预期的那样工作,只是generate()并没有给我我所期望的。在

有没有什么方法可以表示我希望生成器项按行尾分开?还是我做错了什么?如果我用错了,还有更好的方法,我也会接受的。在


Tags: 方法代码name文档infoenvjinja2doc
1条回答
网友
1楼 · 发布于 2024-10-01 00:30:49

派对有点晚了(4年!),但看起来generate()函数可以用于for循环和if块,但是您的模板没有这些。在

要决定在输出中包含什么,请使用{% if <external.factor> %}并将外部因子传递给generate(或者render()不清楚此应用程序需要generate())。在

相关问题 更多 >