我有一个脚本,我们称它为generator.py
,该脚本从一个Jinja模板(templated.py
)渲染一个Python程序(template.jinja
)。
我希望templated.py
始终具有生成器运行当天的值。
例如,假设template.jinja
是:
the_date = {{ date_param }}
print('Script was generated on {}'.format(the_date)
run_function_that_requires_date_as_argument(the_date)
如果生成器类似:
d = datetime.today()
templated_source = template.render(date_param=d)
save_templated_script_to_file(script_source=templated_source, filename='templated.py')
然后我得到类似的东西:
the_date = 2019-12-04 11:17:05.892525
print('Script was generated on {}'.format(the_date)
run_function_that_requires_date_as_argument(the_date)
哪个不是有效的Python。如果我用d='datetime.today()'
设置参数,则会得到:
the_date = datetime.today()
print('Script was generated on {}'.format(the_date)
run_function_that_requires_date_as_argument(the_date)
这是有效的Python,但功能无效-它会打印模板化脚本的运行日期,而不是其生成日期。
如何将今天的日期传递给Jinja渲染器,使其保留为Python对象,而不是转换为字符串?