[英]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.