我在 Jinja2 API 中查找了转储:
将完整的流转储到文件或类似文件的对象中。默认情况下,会写入 unicode 字符串,如果您想在写入之前进行编码,请指定编码。
我无法找到可以转储回字符串的类似文件的对象。有谁知道这个问题的解决方法?
编辑:我通常将输出放入文件中 - 但在单独的情况下,我将输出附加到电子邮件中。
我不确定您为什么要查看模板的流 API。直接渲染模板即可。来自API 文档的“基础知识”部分:
要使用一些变量来渲染它,只需调用该
render()方法:Run Code Online (Sandbox Code Playgroud)print template.render(the='variables', go='here')
该方法返回一个 Unicode 字符串。从Template.render()文档中:
这会将呈现的模板作为 unicode 字符串返回。
该.dump()方法仅适用于模板流、该Template.stream()方法生成的对象;当您想要的只是一个字符串时,您不需要担心这些。
即便如此,如果您想要来自流的字符串,只需加入块即可:
template_stream = template_obj.stream()
rendered = ''.join(template_stream)
Run Code Online (Sandbox Code Playgroud)
最后但并非最不重要的一点是,如果您仍然需要内存中的文件对象,那么只需看看io.StringIO():
import io
fileobj = io.StringIO()
template_stream = template_obj.stream()
template_stream.dump(fileobj)
rendered = fileobj.getvalue()
Run Code Online (Sandbox Code Playgroud)
在内部,.dump()被实现为循环self,将每个块写入文件对象。
| 归档时间: |
|
| 查看次数: |
2110 次 |
| 最近记录: |