Несколько рендеров шаблона jinja2 с визуализированным элементом в цикле for - PullRequest
0 голосов
/ 22 мая 2019

Можно ли выполнять последующие рендеринг с помощью 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.

Как мне решить эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...