Skip to content
Advertisement

How to Use jinja to render HTML without flask?

I need to render HTML page using jinja but without flask I read some other questions here but none had clear answer kindly let me know how can i achieve the same

File structre

1.py

HTML folder

1.html

templates
show persons.txt

Here I need to render 1.html using 1.py – is it possble to do it in ofline mode

current 1.py

  from jinja2 import Environment, FileSystemLoader

persons = [
    {'name': 'Andrej', 'age': 34},
    {'name': 'Mark', 'age': 17},
    {'name': 'Thomas', 'age': 44},
    {'name': 'Lucy', 'age': 14},
    {'name': 'Robert', 'age': 23},
    {'name': 'Dragomir', 'age': 54}
]

file_loader = FileSystemLoader('templates')
env = Environment(loader=file_loader)

template = env.get_template('show persons.txt')

 
template = env.get_template('1.html ') #  how can i do the same with html here
output = template.render(persons=persons)
print(output)

currently with this I am able to print output but if I need to get same data on a html file what can be done here ?

Also if possible if also can we open the html page when run

updated code after Corralien comments is der a way to open this in browser directly

from jinja2 import Environment, FileSystemLoader

persons = [
    {'name': 'Andrej', 'age': 34},
    {'name': 'Mark', 'age': 17},
    {'name': 'Thomas', 'age': 44},
    {'name': 'Lucy', 'age': 14},
    {'name': 'Robert', 'age': 23},
    {'name': 'Dragomir', 'age': 54}
]

file_loader = FileSystemLoader('templates')
env = Environment(loader=file_loader)

template = env.get_template('1.html')

output = template.render(persons=persons)
print(output)

Output

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
Andrej -  34
Mark -  17
Thomas -  44
Lucy -  14
Robert -  23
Dragomir -  54

</body>
</html>

Advertisement

Answer

To open your html file into your browser, use webbrowser module (standard library)

import webbrowser
import tempfile

# Your code here
...
output = template.render(persons=persons)

with open('output.html', 'w') as fp:
    fp.write(output)
webbrowser.open_new('output.html')  # or .open_new_tab('output.html')
User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement