Можно ли выполнять последующие рендеринг с помощью jinja2
, если один из рендеринга элементов находится внутри цикла for
?
Код
from jinja2 import Template, DebugUndefined
from shutil import copyfile
import os
import webbrowser
my_remark = "Does this work?"
my_dict = {'a': 0,
'b': 1,
'c': 2}
file_name_template = "template.html"
file_name_log = "log_report.html"
file_exists = os.path.isfile(file_name_log)
if file_exists:
os.remove(file_name_log)
copyfile(file_name_template, file_name_log)
template = Template(open(file_name_log).read(), undefined=DebugUndefined)
template = template.render(my_remark=my_remark)
template = Template(template, undefined=DebugUndefined).render(my_dict=my_dict)
with open(file_name_log, "w") as file_handle: file_handle.write(template)
path = "C:/Program Files (x86)/Google/Chrome/Application/chrome.exe"
webbrowser.get(path + " %s").open('file://' + os.path.realpath(file_name_log))
работает нормально, когда template.html
определяется как
<!DOCTYPE html>
<html lang="en">
<body>
Start<br/>
{{my_remark}}<br/>
{{my_dict}}<br/>
End
</body>
</html>
, но не тогда, когда оно определяется как
<!DOCTYPE html>
<html lang="en">
<body>
Start<br/>
{{my_remark}}<br/>
{% for key, value in my_dict.items() %}
<li>{{key}}, {{value}}</li>
{% endfor %}
End
</body>
</html>
Я получаю ошибку jinja2.exceptions.UndefinedError: 'my_dict' is undefined
.
Как мне решить эту проблему?