将Python代码嵌入为预处理器PHP样式

时间:2010-03-02 14:06:28

标签: python

我要回到一个旧项目,在那里我将预处理器功能添加到Essence',我意识到我之前编写域特定语言和相关词法分析器/解析器的解决方案是过度的。

相反,我只需要能够将动态语言代码嵌入到文件中,在运行时隔离它,eval并插入结果。换句话说,非常类似于将动态代码插入HTML的PHP​​模型。我宁愿不使用PHP,因为Python作为更大项目(IronPython或Jython)的一部分更容易分发

所以问题是,如何最好地实现以下内容:

<code>Python goes here</code>
Lots of essence <code>Python</code> prime code goes here

我不想改变Essence文件的结构(如果我删除所有代码块,剩下的一切应该能够在语法上正确。它需要能够插入文本代替代码阻止像PHP。

最后安全方面我并不担心代码注入,因为用户自己会选择要执行的文件,尽管如果一个模型比另一个模型有安全优势而没有明显好的额外成本。

提前干杯

1 个答案:

答案 0 :(得分:6)

你最好的选择是使用已制作的(和经过测试的)模板引擎之一。我使用过的两个大问题是MakoCheetah。它们允许您在页面中嵌入代码,并且主要用作MVC架构中的View。

如果您觉得使用其中一个引擎对您的项目来说太过分了,here是一个关于如何自己实现基本模板的小教程。请记住,需要修改示例以满足您的特定项目/需求。