我正在使用python
和jinja2
使用模板从相同的数据生成定制的报告(例如:能够导出到xml
、json
、txt
或定制结构,而无需更改python脚本的任何行)。你知道吗
我希望用户只修改模板文件来配置它的报告,因此使用变量来定义文件名和其他参数。你知道吗
模板示例:
{# HEADER -#}
{% set filename = 'custom-report.txt' -%}
{# BODY -#}
{% for item in items -%}
Date = {{ item["Date"] }}
Action = {{ item["Action"] }}
Result = {{ item["Result"] }}
{% endfor %}
从python中,是否可以检索文件名值(在本例中为“custom-report.txt
”),以便我知道要使用的文件名是什么?你知道吗
谢谢你的帮助!你知道吗
编辑:
为了更好地理解,下面是一个我期望从python得到的示例:
template = templateEnv.get_template(template_path)
rawoutput = template.render(items=items)
output_filename = template.getVariable('filename')
with open(output_filename, "w") as stream:
stream.write(rawoutput)
其中“getVariable”方法就是我想要得到的。你知道吗
更新
同样地,您也可以在模板中返回
items
。在您的上下文中,只需添加一个变量filename = 'custom-report.txt' # or whatever you need
,在呈现中只需使用{{ filename }}
来显示它。你知道吗一个带有
jinja2
包的简单示例模板也可以是您的文件。你知道吗
因此需要python从模板中读取变量。如果没有一个框架,也就是说
flask
,这个框架有一个请求对象来传递值,那么这是做不到的。我建议的一个解决方案是用python读取模板并对其进行解析,以找到所需的文本。即 以上模板按原样给出这样就可以解析整个模板并拆分文件名。不是最好的方法,但如果你保持一个标准格式。你知道吗
相关问题 更多 >
编程相关推荐