Подтвердить что ты не робот

Как сделать вывод jinja2 в файл в Python вместо браузера

У меня есть шаблон jinja2 (файл .html), который я хочу отобразить (замените маркеры значениями из моего файла py). Однако вместо отправки полученного результата в браузер я хочу записать его в новый .html файл. Я бы предположил, что решение также будет похоже на шаблон django.

Как я могу это сделать?

4b9b3361

Ответ 1

Как насчет этого?

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

Ответ 3

Итак, после того, как вы загрузили шаблон, вы вызываете рендер и затем записываете вывод в файл. Оператор '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)

Ответ 4

Ответы выше от работы с янтарными и айчхедами, мне нужно было добавить f.close(). В противном случае вы можете не найти свой файл в своем каталоге.