如何从Jinja模板调用方法?

时间:2012-07-22 11:20:38

标签: python template-engine jinja2

我在路径中有一些jinja模板文件,我想渲染它们并将它们写在文件中,我的问题是它们的输出文件名,

是否有可能在jinja模板中定义一个函数来返回并准备模板输出文件名,并从python代码中调用它并检索它的值?

这是我的代码:

#in here inputPath is jinja templates path
for root, dirs, files in os.walk(inputPath):
    for file in files:
        fPath = root[len(inputPath) + 1:]
        newPath = (fPath + "/" if fPath else '') + file
        template = env.get_template(newPath)
        oPath = os.path.join(outputPath, fPath)
        try:
            os.makedirs(oPath)
        except:
            pass
        oPath=os.path.join(oPath,file)
        with codecs.open(oPath,'w', "utf-8") as f:
            f.write(template.render(projectname=projectName, mainxmlpath=mainXamlPath))

在此代码中输出文件名正好是jinja模板文件名。

1 个答案:

答案 0 :(得分:2)

我已经解决了,

模板类具有模块属性,其中包含所有模板方法和已定义的变量

例如template.module.foo()在jinja模板中调用您的foo宏。