Вот как я создаю свой html
файл:
#html_report.py
values_params = # A dict from a .json file
analysis_template = report_env.get_template('analysis.html')
section_template = report_env.get_template('section.html')
values_section = {
'record_nature' : values_params['record_nature'],
'row_count' : # some query function
'analyses' : values_params['analyses'],
'table_example' : pdh.query_to_dataframe(values.count_by_types()).to_html()
}
sections = list()
sections.append(section_template.render(values_section))
with open(output_path + analysis_filename, 'w') as f:
f.write(analysis_template.render(
sections = sections
))
Вот так выглядит файл .json
, как будто я считываю свои параметры в values_params
:
"values" : {
"record_nature" : "output of a certain device with a timestamp and value",
"analyses" : [
{
"x" : "tpye",
"y" : "measures",
"table" : // this is where a query function would go
}
]
},
analysis.html
имеет все oop, например:
<body>
{% for section in sections %}
{{ section }}
{% endfor %}
</body>
Здесь sections_template
оценивается после добавления к основному analysis_template
section.html
встроенный l oop тоже:
<h3>
{% for a in analyses %}
{{ a.y }} distribution on {{ a.x }}
{{ a.table }}
{% endfor %}
</h3>
Дело в том, что у меня есть функции с результатами запросов из базы данных, которые я могу легко передать в объявленный вручную шаблон.
Однако с встроенные части, я не знаю, как передать, например, реальную функцию, которая нужна a.table
. Я добавил одно внешнее поле 'table_example'
, в котором показан пример функции генератора таблиц html.
Я знаю, что это много кода, но для подведения итогов это проблема:
template rendering -> pass function into manually declared template -> pass function into dynamically created sub-templates.
Кто-нибудь с большим опытом имеет понимание?