gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 19:28:19 26 4
gpt4 key购买 nike

我正在尝试对我的 Apache httpd 配置进行模板化以部署到不同的环境中,我想使用 Python 语言 Cheetah 应用程序来执行此操作。但是,我在使用命令行 cheetah 程序时遇到困难,我认为这是我对 Cheetah 的误解以及缺乏文档的结合。

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

httpd.tmpl:

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

生产环境:

HTTP_PORT=34120
HTTPS_PORT=34121
ENABLE_HTTPS=true

填充此 Cheetah 模板所需的命令行是什么?我用过:

cheetah f --oext conf --debug httpd

但显然 prod.env 没有作为输入文件读取。将 #include 添加到我的模板文件的顶部:

#include "prod.env"

没有找到我的名字:

Cheetah.NameMapper.NotFound: cannot find 'APACHE_PORT'

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

谢谢!

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


已解决

感谢@pyfunc 提供的文档链接,我现在明白了如何完成此操作。主要问题是在 cheetah 命令行上提供 --env,它将当前环境变量传递给 cheetah。但是,必须首先导出这些环境变量。

最佳答案

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

使用

#include raw "prod.env"

还有

#set global $HTTP_PORT="34120"

要包含不同的 env 文件,您也需要将其模板化。

请查看以下示例以获取对您有帮助的示例。

关于Python Cheetah - 为模板指定名称/值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3630065/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com