python - 如何从 Jinja 模板调用方法?

标签 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 模板文件名。

最佳答案

我已经解决了

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

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

关于python - 如何从 Jinja 模板调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11599842/

相关文章:

python - Zed 的 Learn Python the Hard way 练习 25 中的 'import' key

python - 用 scrapy 解决 reCAPTCHA

python - 如何在 Python 中像 ERB 一样进行模板化?

python - PREFERRED_URL_SCHEME 似乎在 Jinja2 Flask 模板中不起作用

python - 如何将 pandas 数据框舍入为分数?

python - 改进模板标签的功能 - Django

java - 速度模板 : how do I put the result of#springMessage() into a velocity variable

erlang 模板引擎。 sgte、google-cTemplate 或 erlydtl

css - 如果我不在我的自定义模板中使用标准的 joomla CSS 怎么办?

php - Jinja2 与 Smarty