哪种python模板语言允许从字典中填充变量?

2024-06-26 14:07:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我想为一些外部软件包生成一个配置文件。配置文件需要一些敏感信息,如AWS访问密钥和密码等。我想在github上公开这些配置文件,但显然我不想硬编码和公开这些凭据。在

凭证还必须显示在配置文件的正确位置,这样我就不能把它们“猫”到最后。在

我认为使用一种诱人的语言,如jinja2、mako、django等将是一个不错的解决方案。然后我就可以把模板放到网上,并要求用户用凭据创建一个新文件,然后运行一个脚本(我提供的)来呈现模板。模板引擎还可以支持其他更复杂的编辑(我认为)。在

有人能推荐一个特殊的模板引擎,使之变得简单吗?我想象一下,在这种情况下,您可以创建一个模板,然后通过提供包含要分配的变量的字典来呈现它。也许他们都这么做。我不知道。在

更具体地说,我想要这样的东西

Template("Hello {{name}}, you are #{{num}}").render({"name":"Joe","num":1}) 

我看到的所有模板都是这样的

^{pr2}$

这使得编写一个通用程序很困难,该程序读取键值对的参数文件并将它们交给模板进行渲染。例如,它可能需要使用“eval”,这很尴尬。在


Tags: 文件name引擎程序githubaws模板信息
3条回答

如果您的模板语言只允许render(a=foo, b=bar),那么您可以这样处理它:d = {"a": foo, "b": bar}; render(**d)不需要eval。在

有关详细信息,请阅读https://docs.python.org/2/tutorial/controlflow.html#unpacking-argument-lists

这是基于意见的,但是我将jinja2与YAML结合使用。在

Jinja2非常灵活,允许循环、逃逸等

YAML很容易编辑,可以转换成python字典,这个python字典的值可以作为渲染模板的基础。在

我很高兴发现SaltStack解决方案默认使用这两个-Jinja2和YAML。可能有很好的理由。在

我想你可以用任何模板系统。如果参数在字典中,但模板API需要关键字,请使用argument unpacking syntax

my_template.render(**my_parameter_dict)

相关问题 更多 >