我在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