我有一个要渲染的jinja2模板(.html文件)(用py文件中的值替换标记)。但是,我没有将呈现的结果发送到浏览器,而是将其写入新的.html文件。我想对于Django模板,解决方案也将类似。
我怎样才能做到这一点?
Answers:
这样的事情怎么样?
from jinja2 import Environment, FileSystemLoader
env = Environment(loader=FileSystemLoader('templates'))
template = env.get_template('test.html')
output_from_parsed_template = template.render(foo='Hello World!')
print(output_from_parsed_template)
# to save the results
with open("my_new_file.html", "w") as fh:
fh.write(output_from_parsed_template)
test.html
<h1>{{ foo }}</h1>
输出
<h1>Hello World!</h1>
如果使用的是Flask之类的框架,则可以在返回之前在视图底部进行操作。
output_from_parsed_template = render_template('test.html', foo="Hello World!")
with open("some_new_file.html", "wb") as f:
f.write(output_from_parsed_template)
return output_from_parsed_template
rb
为wb
。
)
底部代码部分中第一行的末尾缺少内容。我试图添加它,但SO需要修改为> 6个字符(笨限制)..
您可以将模板流转储到文件,如下所示:
Template('Hello {{ name }}!').stream(name='foo').dump('hello.html')
参考:http : //jinja.pocoo.org/docs/dev/api/#jinja2.environment.TemplateStream.dump
因此,在加载模板之后,您可以调用render,然后将输出写入文件。“ with”语句是上下文管理器。在缩进内部,您有一个名为'f'的打开文件。
template = jinja_environment.get_template('CommentCreate.html')
output = template.render(template_values))
with open('my_new_html_file.html', 'w') as f:
f.write(output)