Python Cheetah为模板指定名称/值对

2024-06-18 13:16:10 发布

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

我正在尝试将apachehttpd配置模板化,以便部署到不同的环境中,我希望使用Python语言Cheetah应用程序来实现这一点。但是,我在使用命令行cheetah程序时遇到了困难,我认为这是我的误解Cheetah和缺乏文档的综合结果。在

我的目标是拥有一个httpd.conf模板文件和环境特定定义文件中的替换变量。在

httpd.tmpl公司:

Listen $HTTP_PORT
...
#if $ENABLE_HTTPS == true
<Virtual Host *:$HTTPS_PORT>
    ...
</VirtualHost>
#end if

生产.env:

^{pr2}$

填充这个Cheetah模板需要什么命令行?我用过:

cheetah f --oext conf --debug httpd

但显然prod.env不是作为输入文件读取的。{cd4>将模板添加到顶部:

#include "prod.env"

却找不到我的名字:

Cheetah.NameMapper.NotFound: cannot find 'APACHE_PORT'

无论如何,这不是理想的情况,因为我希望能够在命令行上为cheetah的每次调用指定名称/值映射文件。在

谢谢!在

编辑:我知道我可以编写一个python脚本来执行文件读取,然后使用cheetahapi进行替换。但是,我正在寻找一种使用命令行填充模板的方法。在


已解决

多亏了@pyfunc提供的文档链接,我现在了解了如何实现这一点。主要问题是在cheetah命令行上提供--env,该命令行将当前环境变量传递给cheetah。但是,必须首先导出这些环境变量。在


Tags: 文件命令行文档httpsenv模板if环境
1条回答
网友
1楼 · 发布于 2024-06-18 13:16:10

Cheetah将#include文本的每个块包装在嵌套的模板对象中。在

使用

#include raw "prod.env"

还有

^{pr2}$

要包含不同的env文件,也需要对其进行模板化。在

请看下面的例子来帮助你。在

相关问题 更多 >