繁体   English   中英

可以将JInja模板转储为字符串吗?

[英]Can JInja templates be dumped into strings?

我在Jinja2 API中查找了转储:

将整个流转储到文件或类似文件的对象中。 默认情况下会写入unicode字符串,如果要在写入之前进行编码,请指定编码。

我找不到可以转储到字符串中的类似文件的对象。 有谁知道解决方法?

编辑:我通常将输出放在文件中,但是在另一种情况下,我会将输出附加到电子邮件中。

我不确定为什么要查看模板的流式API。 只需直接渲染模板即可。 在API文档的“ 基础知识”部分中:

要使用一些变量渲染它,只需调用render()方法:

 print template.render(the='variables', go='here') 

该方法返回Unicode字符串。 Template.render()文档中

这将以unicode字符串形式返回渲染的模板。

.dump()方法仅适用于模板流 ,即由Template.stream()方法产生的对象; 当您只需要一个字符串时,您就不必担心那些。

即使这样,如果您想从流中获取字符串,也只需加入这些块即可:

template_stream = template_obj.stream()
rendered = ''.join(template_stream)

最后但并非最不重要的一点是,如果您仍然需要内存中的文件对象,请io.StringIO()

import io

fileobj = io.StringIO()
template_stream = template_obj.stream()
template_stream.dump(fileobj)
rendered = fileobj.getvalue()

在内部, .dump()实现为self循环,将每个块写入文件对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM