我在Jinja2 API中查找了dump:JInja模板可以倾倒入字符串吗?
将完整的流转储到文件或文件类对象中。每写一个默认的unicode字符串,如果要在写入之前进行编码,则指定编码。
我无法找到可以转储回字符串的类文件对象。有没有人知道这个解决方法?
编辑:我通常把输出放在一个文件中 - 但在另一种情况下,我将输出附加到电子邮件中。
我在Jinja2 API中查找了dump:JInja模板可以倾倒入字符串吗?
将完整的流转储到文件或文件类对象中。每写一个默认的unicode字符串,如果要在写入之前进行编码,则指定编码。
我无法找到可以转储回字符串的类文件对象。有没有人知道这个解决方法?
编辑:我通常把输出放在一个文件中 - 但在另一种情况下,我将输出附加到电子邮件中。
我不确定你为什么在寻找模板流媒体API。直接渲染模板。从API文档的Basics section:
要使用一些变量呈现它,只需调用
render()
方法:print template.render(the='variables', go='here')
该方法返回一个Unicode字符串。从Template.render()
documentation:
这将返回呈现的模板作为unicode字符串。
.dump()
方法只适用于template streams,由Template.stream()
method产生的对象;当你想要的只是一个单独的字符串时,你不需要担心这些。
即便如此,如果你想从流串,只是加入了大块:
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
,写入每个数据块的文件对象。
谢谢,我缺少file.get_model()作为渲染参数。 –
调用'.render()'返回一个字符串。 –
(并且写入字符串的标准python文件类对象称为[StringIO](https://docs.python.org/3/library/io.html#io.StringIO)。) –
模板引擎已生成制作琴弦! – Juggernaut