I have a jinja2 template (.html file) that I want to render (replace the tokens with values from my py file). Instead of sending the rendered result to a browser, however, I want to write it to a new .html file. I would imagine the solution would also be similar for a django template.
How can I do this?
Jinja, also commonly referred to as "Jinja2" to specify the newest release version, is a Python template engine used to create HTML, XML or other markup formats that are returned to the user via an HTTP response.
How about something like this?
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>
output
<h1>Hello World!</h1>
If you are using a framework, such as Flask, then you could do this at the bottom of your view, before you return.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With