我希望能够转储到一个对象中。
根据文档,我可以转储到文件或类似文件的对象中。
我可以使用什么作为类似文件的对象?
观察:我不想保存它也不想显示它。它是一个可下载的路由器配置模板,是根据数据库中存储的数据动态创建的。
env = Environment(autoescape=False, optimized=False)
config_file = None
device_config = None
device_config = env.from_string(config_template.config)
device_config.stream(
STR = site.location.upper()[:4],
).dump(config_file)
原因是我想使用内容配置将文件输出到带有 django 的用户浏览器。
编辑: 使用 stringIO 进行测试
import StringIO
>>> config_file = StringIO
>>> device_config = None
>>> device_config = env.from_string(config_template.config)
>>> device_config.stream(
... STR = site.location.upper()[:4],
... ).dump(config_file)
Traceback (most recent call last):
File "<console>", line 3, in <module>
File "/usr/lib/python2.7/site-packages/jinja2/environment.py", line 1167, in dump
fp.write(item)
AttributeError: 'module' object has no attribute 'write'
>>>
谢谢
最佳答案
我从未使用过 jinja2,但我怀疑您可以使用 StringIO
来获取所需的字符串内容。
以下内容应该有效,但我无法(轻松)测试它......
from StringIO import StringIO
env = Environment(autoescape=False, optimized=False)
sio = StringIO()
device_config = env.from_string(config_template.config)
device_config.stream(
STR = site.location.upper()[:4],
).dump(sio)
content = sio.getvalue()
但是,如果您只想要一个字符串,那么看起来您应该使用 render()
方法......
env = Environment(autoescape=False, optimized=False)
device_config = env.from_string(config_template.config)
content = device_config.render(
STR = site.location.upper()[:4],
)
...但是,同样,我无法轻松测试它。
关于python - Jinja2 转储到一个对象中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38098087/